typeof()when无法将类型'System.Type'隐式转换为'string'

时间:2013-07-29 04:14:49

标签: c# typeof

我正在做一些Xml序列化,我收到了一个编译项错误。

带错误的代码是:

public class EPubBody
{
    [XmlElement(ElementName = "Image", DataType = typeof(EPubImage))]
    public object[] BodyItems;
}

错误发生在typeof(EPubImage)部分。错误是Cannot implicitly convert type 'System.Type' to 'string'

EPubImage位于同一个namspace中,如下所示:

public class EPubImage
{
    [XmlAttribute("imagePath")]
    public string ImagePath { get; set; }

}

我猜typeof(EPubImage)正在返回System.Type而不是string。有关如何确保typeof语句将返回字符串而不是System.Type?

的任何指针

3 个答案:

答案 0 :(得分:2)

根据documentationDataType属性用于指定XSD数据类型,而不是.NET类型:

  

XML Schema数据类型,由World Wide Web Consortium(www.w3.org)文档定义,名为“XML Schema Part 2:Datatypes”。

请改为尝试:

public class EPubBody
{
    [XmlElement(ElementName = "Image")]
    public EPubImage[] BodyItems;
}

答案 1 :(得分:1)

MSDN Documentation for XmlElementAttribute明确指出DataTypestring,而Type属性为Type

答案 2 :(得分:0)

我找到了对XmlElement(字符串,类型)的XmlElement()的覆盖,所以我尝试了这个,它可以工作。

public class EPubBody
{
    [XmlElement("image", typeof(EPubImage))]
    public object[] BodyItems;
}

当我说“它有效”时,我的意思是我不再是编译时错误。让它展示Remarks section of this document中所见的行为是另一个问题。