2

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

有错误的代码是:

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

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

该类EPubImage位于同一个命名空间中,如下所示:

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

}

我猜typeof(EPubImage)是返回 aSystem.Type而不是string. 有关如何确保 typeof 语句将返回字符串而不是 System.Type 的任何指针?

4

3 回答 3

2

根据文档,该DataType属性用于指定 XSD 数据类型,而不是 .NET 类型:

一种 XML Schema 数据类型,由名为“XML Schema Part 2: Datatypes”的万维网联盟 (www.w3.org) 文档定义。

试试这个:

public class EPubBody
{
    [XmlElement(ElementName = "Image")]
    public EPubImage[] BodyItems;
}
于 2013-07-29T04:23:41.533 回答
1

XmlElementAttribute的MSDN 文档清楚地指出DataTypestring,而Type属性是Type

于 2013-07-29T04:24:19.687 回答
0

我为 XmlElement(string, Type) 找到了 XmlElement() 的覆盖,所以我尝试了这个,它可以工作。

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

当我说“它有效”时,我的意思是我不再出现编译时错误。让它表现出本文档的备注部分中所见的行为是另一个问题。

于 2013-07-29T04:36:16.287 回答