2017-08-08 11 views
0

私は、クラス、このようなものを持っている:C#の属性として自分のタイプをXMLにシリアライズ

Class1: 
    List<Class2> A; 
    string B; 

Class2: 
    Class3 A2; 
    string B2; 

Class3: 
    string A3; 
    string B3; 

そして、私はこのようなことになるだろうされ、それをXMLにシリアライズたいと思います:

<Class1> 
    <Class2 A3="x" B3="y" B2="z" /> 
    <Class2 A3="x2" B3="y2" B2="z2" /> 
    ... 
    <B> abc </B> 
</Class1> 

をXmlAttributeとしてClass2フィールドを設定すると、Unhandler例外System.InvalidOperationExceptionが発生する
これを行う方法はありますか? 編集:[OK]を、私は少ない詳細を与える。私はどのように自分のタイプのリストをシリアル化するかのように見えるようになる問題があります。私はこれは次のようにXMLにシリアライズすることができます。

<Class1> 
    <A> 
    <Class2 B2="x"> 
     <Class3 A3="x" B3="x"/> 
    </Class2> 
    <Class2 B2="x"> 
     <Class3 A3="x" B3="x"/> 
    </Class2> 
    </A> 

しかし、私は好きな名前のクラス3(このクラスのフィールドのみ)することなく、属性としてClass3にを持っているでしょうし、私がリストアップしていたくない、だけで列挙された要素は、名前のクラス2を持っています。私は理解できないとわかりません...

+0

私は例外がメッセージを持っていて、内部例外であってもよいと思います。あなたはそれを投稿できますか?クラスメンバーをシリアライズするには、それらを公開する必要があります。非常に重要です。 –

+0

[要素のXML属性としてプロパティをシリアル化する]の可能な複製(https://stackoverflow.com/questions/11330643/serialize-property-as-xml-attribute-in-element) –

+0

質問を編集して詳細を追加します。 – heheszki

答えて

0

A3とB3の小道具をClass2に移動できますか?

Class1: 
[XmlElement("Class2")] 
List<Class2> A; 
[XmlElement] 
string B; 

Class2: 
[XmlAttribute] 
string A3; 
[XmlAttribute] 
string B3; 
[XmlAttribute] 
string B2; 
関連する問題