我不知道使用的是什么序列化程序,但在使用 datacontract 属性的 Name 属性时,我在序列化过程中看到了一些不一致的行为。
这是我正在做的一个例子:
[XmlRoot(ElementName = "ASerCollection")]
public class SerCollection : List<ColElem>
{
}
[DataContract(Name = "SomethignElse", Namespace = "")]
public class ColElem
{
}
我遇到的问题是序列化正在生成类似于以下 XML 的内容:
<ASerCollection>
<ColElem />
</ASerCollection>
我将此作为 WCF 服务的一部分进行。如果我可以采取不同的方式来强制使用我的数据契约(Contract)的“名称”属性,请告诉我。
谢谢
最佳答案
这是因为:
- XMLRootAttribute 由 XmlSerializer 使用
- DataContractAttribute 由DataContractSerializer 使用
一个人不了解另一个人的属性。 根据您尝试执行的操作以及您的类之间的关系,我认为您应该阅读如何指导上述序列化程序并选择适合需要的序列化程序。
这里有几个链接:
- http://msdn.microsoft.com/en-us/library/e123c76w.aspx
- http://msdn.microsoft.com/en-us/library/kd1dc9w5.aspx
希望对您有所帮助。
关于c# - DataContract 不使用属性中指定的名称属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4899557/