ネストクラスのメンバー全体をシリアル化せずにネストしたクラスをシリアル化する最良の方法を試しています。クラス以下を仮定:ネストしたクラスメンバーのシリアル化
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; }
}
私はList型の変数に格納されているタイプのClassA1のオブジェクトの固定されたリストを持っています。
私もList型の変数
に格納されているタイプのClassA2のオブジェクトのリストを持っている私は何をしたいのシリアライズとClassA2オブジェクトの私のリストをデシリアライズです。自動直列化は各ClassA1オブジェクトの内容全体をシリアル化しますが、直列化してからClassA1.IDメンバを逆シリアル化して、逆シリアル化時に固定リストからオブジェクト参照を取得したいだけです。
自動シリアライズは私にこれを与える:私は私のXMLにしたい
...
<ClassA2>
<ID>IDStringForObjectClassA2</ID>
<Details>
<ClassA1>
<ID>IDStringForObjectOfClassA1</ID>
<Name>MyNameValue</Name>
<Value>MyStringValue</Value>
<Description>MyDescriptionValue</Description>
</ClassA1>
</Details>
<SomeValue>0</SomeValue>
</ClassA2>
最終的な結果は、私が欲しい、この
...
<ClassA2>
<ID>IDStringForObjectClassA2</ID>
<Details>
<ClassA1>
<ID>IDStringForObjectOfClassA1</ID>
</ClassA1>
</Details>
<SomeValue>0</SomeValue>
</ClassA2>
とClassA1.IDメンバーの逆シリアル化の上にあります予めロードされたリスト内の実際のオブジェクトを見つけるため
EDIT:ドキュメント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'の終了タグもありません。私は をデシリアライズするために、標準のXmlSerializerクラスを使用しています – RBT
@RBTは、このに上記を組み込むことがとにかくありますか私は完全にカスタム直列化復元に変更しなければならないの 'VARシリアライザ=新しいXmlSerializerを(typeof演算(CableDocument));' 'CableDocument value =シリアライザ。' 編集:私の人生のために、正しくマークダウンを得ることができませんでした。 – Woodjitsu