我需要完成非常简单的任务:序列化和反序列化对象层次结构。与java中的XStream具有相同功能的C#序列化器/解串器
我试过XMLSerializer
,DataContractSerializer
,NetDataContractSerializer
但似乎没有任何工作,总会有一些问题。
XMLSerializer
是不好的,因为它需要所有的属性公开。 (网络)DataContractSerializer(s)不好,因为它总是缺少一些元数据 - 但在用户创建XML时没有元数据。
那么你将如何解决这个任务?考虑类:
class A {
private B instanceB;
private int integerValue;
... getters/setters
}
class B {
private List<C> cInstanceList;
private string stringValue;
... getters/setters
}
class C {
... some other properties
... getters/setters
}
和用户输入:
<A>
<B>
<cInstanceList>
<C>
<someproperties>val</someproperties>
</C>
<C>
<someproperties>differentVal</someproperties>
</C>
</cInstanceList>
<strigValue>lalala<stirngValue>
</B>
<integerValue>42</integerValue>
</A>
什么DataContractors
缺少的是像 “类型” 或 “命名空间” 等XStream
不需要的元数据。我知道反序列化对象的类型,所以我需要写功能:
public T Deserialize<T>(string xml);
我想要的用例:
var myDeserializedObject = Deserialize<A>(inputString);
我在做什么错?你会以不同的方式解决吗?
噢,我忘了你不要在C#中使用getter和setter你使用属性! –