我需要完成非常簡單的任務:序列化和反序列化對象層次結構。與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你使用屬性! –