Мне нужно выполнить очень простую задачу: сериализовать и десериализовать иерархию объектов.C# serializer/deserializer с такой же функциональностью, как XStream в java
Я пробовал XMLSerializer
, DataContractSerializer
, NetDataContractSerializer
, но ничего не работает, всегда есть проблема.
XMLSerializer
плохо, потому что для этого требуются все свойства. (Net) 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# ВЫ ИСПОЛЬЗУЕТЕ НЕДВИЖИМОСТЬ !! –