1

XmlSerializationを使用してオブジェクトをxmlにシリアル化するときに、デフォルトで通常の変数を無視することは可能ですか?

私は変数を持っています:

class SomeClass
{
    private bool trueOrFalse = false;

    public bool TrueOrFalse
    {
        get { return trueOrFalse; }
        set { trueOrFalse = value; }
    }
}

これをシリアル化すると、XMLファイルにそれぞれ1つずつ2つの「要素」が含まれますが、それらは同じです。したがって、よりクリーンなXMLファイルの場合は、何らかの方法でプロパティを含めたいだけで、XmlIgnoreを使用する必要はありません。デフォルトとして、これを行う方法はありますか?

4

3 に答える 3

2

すみません、それは私の間違いでした。いくつかのクラスが実装するインターフェースがあり、すべてのフィールドがプライベートに設定されています。運が良ければ、インターフェイスを実装する特定のオブジェクトをテストして、そのフィールドをpublicに設定しました。これが、propertyname+propertyvalueとfieldandfieldvalueの両方を書き込む原因でした。

したがって、フィールドはプライベートである必要があります。

于 2012-04-30T12:57:48.267 に答える
0

C#のバージョンによっては、次のようにプロパティを定義できる場合があります。

public class SomeClass
{
    public bool TrueOrFalse{ get; set; }      
}
于 2012-04-30T00:32:32.117 に答える
-1

@Jaime Olivaresがxmlシリアル化で述べたように、クラス内のパブリックメンバーのみをシリアル化するので、このようにフィールドのプレフィックスを付けてみてください

[Serializable]
class SomeClass
{
//does not persist the member in your serialization process
 [NonSerialized]
 private bool trueOrFalse = false;

 public bool TrueOrFalse
 {
    get { return trueOrFalse; }
    set { trueOrFalse = value; }
 }

}

于 2012-04-30T00:48:46.540 に答える