我想制定出序列化嵌套類而不必序列化整個嵌套類成員的最佳方法。假設以下類:嵌套類成員序列化
public class ClassA
{
public decimal ID { get; set; }
}
public class ClassA1 : ClassA
{
public decimal Name { get; set; }
public decimal Value { get; set; }
public decimal Description { get; set; }
}
public class ClassA2 : ClassA
{
public ClassA1 Details { get; set; }
public int SomeValue { get; set; }
}
我有一個類型爲ClassA1的對象的固定列表存儲在類型爲List的變量中。
我也有存儲類型列表中
的變量類型ClassA2的對象列表,我想什麼做的是序列化和反序列化我ClassA2對象列表。自動序列化將序列化每個ClassA1對象的全部內容,但我只想序列化並反序列化ClassA1.ID成員,然後在反序列化時從我的固定列表中檢索對象引用。
自動序列使我這個:
...
<ClassA2>
<ID>IDStringForObjectClassA2</ID>
<Details>
<ClassA1>
<ID>IDStringForObjectOfClassA1</ID>
<Name>MyNameValue</Name>
<Value>MyStringValue</Value>
<Description>MyDescriptionValue</Description>
</ClassA1>
</Details>
<SomeValue>0</SomeValue>
</ClassA2>
最終的結果我想在我的XML是這個
...
<ClassA2>
<ID>IDStringForObjectClassA2</ID>
<Details>
<ClassA1>
<ID>IDStringForObjectOfClassA1</ID>
</ClassA1>
</Details>
<SomeValue>0</SomeValue>
</ClassA2>
,並在ClassA1.ID成員的反序列化,我想在預加載列表中找到實際對象
編輯:文檔s下面
public class Document
{
private _ClassA2;
public Document() { _ClassA2 = null; }
public ClassA2 ClassA2
{
get { return _ClassA2; }
set { _ClassA2 = value; }
}
public string Serialize(StreamWriter writer)
{
var serializer = new XmlSerializer(typeof(ClassA2));
serializer.Serialize(writer, this);
return writer.ToString();
}
public static ClassA2 DeSerialize(StreamReader reader)
{
var serializer = new XmlSerializer(typeof(ClassA2));
ClassA2 value = serializer.Deserialize(reader) as ClassA2 ;
return value;
}
}
您用於反序列化的當前代碼是什麼? – RBT
根據您提到的類,您的XML無法用於反序列化。 'Details'標籤裏面應該有'ClassA1'標籤。 'ClassA2'也沒有結束標籤。 – RBT
@RBT我使用標準XmlSerializer類反序列化 反正是有上述納入這個或做我必須改變,以完全自定義的反序列化 'VAR串行=新的XmlSerializer(typeof運算(CableDocument));' 'CableDocument value = serializer。反序列化(閱讀器)爲CableDocument;' 編輯:對於我的生活,我無法正確地在上面工作markdown – Woodjitsu