我正在做一些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?
答案 0 :(得分:2)
根据documentation,DataType
属性用于指定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明确指出DataType
为string
,而Type
属性为Type
。
答案 2 :(得分:0)
我找到了对XmlElement(字符串,类型)的XmlElement()的覆盖,所以我尝试了这个,它可以工作。
public class EPubBody
{
[XmlElement("image", typeof(EPubImage))]
public object[] BodyItems;
}
当我说“它有效”时,我的意思是我不再是编译时错误。让它展示Remarks section of this document中所见的行为是另一个问题。