考虑以下过度简化的 XML 块:
<ElementA>
<AttributeValue DataType="http://www.w3.org/2001/XMLSchema#integer">5
</AttributeValue>
</ElementA>
具体来说,从 DataType 属性查看 AttributeValue 元素,我知道我的值是整数类型(尽管它可能是双精度、字符串、日期时间......任何来自 w3 标准的已建立数据类型)。我想将此 xml 反序列化为具有强类型值的 .NET 类。我首先想到的是创建一个通用的 AttributeValue 类:
public class AttributeValue<T>
{
public T Value {get; set;}
}
但当然这不起作用有几个原因 - 最大的一个原因是我必须在父类中声明类型,因为 T 没有定义,所以无法编译:
public class ElementA
{
public AttributeValue<T> {get; set; } // Naturally, this will not work because T
} // is not defined.
另外,我可能必须在我的类上实现 IXmlSerializable 来处理自定义序列化。
有没有更好的方法来解决这个问题?我知道我可以在我的代码中序列化 DataType 属性并将值存储为字符串,然后稍后进行转换,但是在我的业务对象中实际具有正确的类型以供以后处理会很有帮助
谢谢你的帮助!
杰森