0
我使用下面的代码序列化/从对象反序列化到XML如何使用DataContractSerializer格式化IDictionary的序列化?
using System.Runtime.Serialization;
public static string Serialize<T>(this T obj)
{
var serializer = new DataContractSerializer(obj.GetType());
using (var writer = new StringWriter())
using (var stm = new XmlTextWriter(writer))
{
serializer.WriteObject(stm, obj);
return writer.ToString();
}
}
public static T Deserialize<T>(this string serialized)
{
var serializer = new DataContractSerializer(typeof(T));
using (var reader = new StringReader(serialized))
using (var stm = new XmlTextReader(reader))
{
return (T)serializer.ReadObject(stm);
}
}
为了与IDictionary的此代码的工作,我有以下的自定义词典类:
[CollectionDataContract(Name = "Kenan", ItemName="Items", KeyName="Row", Namespace="spell", ValueName="Values")]
public class CustomRowList : Dictionary<RowXML, List<ColumnXML>>
{
}
的问题是,当代码输出我
Dictionary<RowXML, List<ColumnXML>>
它看起来像这样:
我不需要<Items>
和<Values>
节点。相反,我想它的输出为:
<RowList>
<Row>
<Title></Title>
<Help_Text></Help_Text>
<ClassName></ClassName>
<ColumnList>
<Column>
<ClassName></ClassName>
<Help_Text></Help_Text>
<Title></Title>
</Column>
<Column>
...
我怎么能这样做的DataContractSerializer格式我的字典?我试着
[CollectionDataContract]
属性设置
ItemName
而且
ValueName
空白,但这没有工作。