C# 无法隐式转换类型';系统类型';至';字符串';
我正在进行一些Xml序列化,并且得到一个编译项错误 出现错误的代码是:C# 无法隐式转换类型';系统类型';至';字符串';,c#,typeof,C#,Typeof,我正在进行一些Xml序列化,并且得到一个编译项错误 出现错误的代码是: public class EPubBody { [XmlElement(ElementName = "Image", DataType = typeof(EPubImage))] public object[] BodyItems; } 错误出现在typeof(EPubImage)部件上。错误是无法将类型“System.type”隐式转换为“string” 类EPubImage位于相同的namspace中,
public class EPubBody
{
[XmlElement(ElementName = "Image", DataType = typeof(EPubImage))]
public object[] BodyItems;
}
错误出现在typeof(EPubImage)
部件上。错误是无法将类型“System.type”隐式转换为“string”
类EPubImage
位于相同的namspace中,如下所示:
public class EPubImage
{
[XmlAttribute("imagePath")]
public string ImagePath { get; set; }
}
我猜typeof(EPubImage)
返回的是系统。Type
而不是字符串。关于如何确保typeof语句将返回字符串而不是System.Type的任何指针?根据,使用DataType
属性指定XSD数据类型,而不是.NET类型:
一种XML模式数据类型,由万维网联盟(www.w3.org)名为“XML模式第2部分:数据类型”的文档定义
请尝试以下方法:
public class EPubBody
{
[XmlElement(ElementName = "Image")]
public EPubImage[] BodyItems;
}
显然,数据类型
是字符串
,而类型
属性是类型
,我为XmlElement(字符串,类型)找到了对XmlElement()的重写,所以我尝试了这个方法,并且效果很好
public class EPubBody
{
[XmlElement("image", typeof(EPubImage))]
public object[] BodyItems;
}
当我说“它有效”时,我的意思是我不再是编译时错误。另一个问题是让它表现出中所示的行为。可能是typeof(EPubImage)。ToString()
DataType
很可能是字符串,而不是类型。尝试使用完全限定名EPubImage
@Tim I,但当它说它是expect astring
时,意味着它需要一个32位整数。那我一定错了。@Tim不能开玩笑吗?@ColeJohnson-当然,我可以开玩笑;很明显这是个笑话。我觉得你的评论很幽默,但我不是100%确定,因此我的“嗯”:)我更喜欢将字段保留为一个对象数组,因为我将使用多种类型,根据在的示例,我猜我被注释中的示例误导了。是否有任何重写可以让typeof(EPubImage)返回字符串?否。。属性中需要的是编译时常量。这不是返回字符串的运算符/函数所提供的。它返回任何东西这一简单事实意味着它可以是可变的(因为C#没有常量的概念)。