XmlSerializerによって作成されたXMLに、既定値のプロパティが含まれないようにしたいとします。これはXmlSerializerで可能ですか、IXmlSerializableを調べる必要がありますか?XmlSerializerでプロパティの値に応じてプロパティを無視する方法
は例えば、私は次のクラスを持っていることがあります。
public class PositionedObject
{
public float X
{ get; set; }
public float Y
{ get; set;}
}
私はそれがPositionedObjectのインスタンスをシリアル化したときに値が0であれば、Xを含まないようにというのXmlSerializerをお伝えしたいと思います(と同じ0の場合はYで)。シリアライザは、プロパティをシリアルすべきかどうかを判断するために、このメソッドを呼び出します
public bool ShouldSerializeX()
{
return X != 0;
}
:
この回答は不十分です。シリアライザがこのような方法についてどのように知っているかわかりません。しかも、これはスケーラビリティがありません。 – Amy
@Inuyasha、あなたはそれを試しましたか?私はそれが動作することを知って、私はこのソリューションを何度も使用しました。これは文書化されていませんが、XMLシリアライザコードを見ると、このメソッドが存在する場合はそのメソッドを呼び出すことがわかります(あるいは、XSpecifiedという名前の読み取り専用プロパティを作成することもできます)。とにかく、もっとスケーラブルな方法を知っていますか? –
犬夜叉 - 実際に試しましたか?この回答に基づいて、私はGoogleにいくつかのことを話すことができ、これがうまくいくと主張するいくつかの記事を見つけました。私は今実施中です。ここにいくつかの情報があります:http://horacegoescoding.blogspot.com/2009/04/using-shouldserialize-for-conditional.html –