我对使用DataContractSerializer使用基元列表时设置自定义元素名称的最佳方法感兴趣.假设我有以下类,其中包含一个字符串列表作为DataMember.
[DataContract]
public class ClassName
{
[DataMember]
public List<String> FieldName { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
默认情况下,此序列化为以下内容:
<ClassName xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
<FieldName xmlns:a="http://schemas.microsoft.com/2003/10/Serialization/Arrays">
<a:string>Value 1</a:string>
<a:string>Value 2</a:string>
<a:string>Value 3</a:string>
</FieldName>
</ClassName>
Run Code Online (Sandbox Code Playgroud)
我想让XML尽可能简单地通过XSLT进行转换,所以理想情况下我会将标签重命名为更有用的东西,比如Value.
一种可能的解决方案是创建一个扩展Collection的类,并为CollectionDataMember参数设置ItemName,我在这里找到它.我想知道是否有办法实现相同的目标,而不需要这个额外的类或其他形式的包装类.XML序列化程序使用XMLArray和XMLArrayItem参数来完成此操作,但DataContractSerializer似乎没有类似的功能.
感谢您的任何提示或想法!
c# wcf xml-serialization datacontract datacontractserializer