2016-05-31 8 views
0

XmlSerializerに新しい動作を適用する新しいXmlAttributesを作成できますか?XmlSerializerの新しい動作(新しいXmlAttributes?)

例では、クラスの指定されたフィールド/プロパティが値がnullの場合、まったくシリアル化されるかどうかを示すXmlAttrbuteがあるとします。

この例では、[Properties/Field] ShouldSerializeまたは[Property/Field] SpecifiedまたはXmlAttributeOverridesを使用できますが、このアプローチは多大な労力を要します。

デコンパイラソフトウェアを使用して、私はSystem.Xml.Serialization dllに行き、XmlIgnoreAttributeやXmlElementAttributeのようなクラスを開きました。 XmlElementAttributeで

私は内部で以下の

public bool IsNullable { 
    get { return nullable; } 
    set { 
     nullable = value; 
     nullableSpecified = true; 
    } 
} 

が、残念ながらnullableSpecifiedプロパティを見つけ:(それは同じ効果を持っている必要があります場合、私は見ることができない[Propert /フィールド] ShouldSerializeまたは[プロパティ/指定したフィールドは]。

答えて

0

いいえ、あなたは、XmlSerializerをがどのように機能するかを変更することはできません。

何あなたのケースで実行可能な回避策かもしれませんが、あなたに基づいてビルド時に、あなたのコードを変更しますいくつかの追加ツールを使用することですカスタム属性(これらの厄介なものを追加するには[Propert/Field]ShouldSerializeのメンバーです) - 例えばPost Sharp(私の知る限り、無料版はあなたのニーズに十分です)。

+0

こんにちは@decPl、私はポストシャープがどのように役立つかを見ていきます。それは動作を変更する方法が存在する必要があります:( – FEST

+0

カスタム属性とリフレクションを使用してIXmlSerializerを使用することはできますか? – FEST

+0

@FEST - あなたは(Reflectionを使用すると、 "それは技術的に実行可能です" – decPL

関連する問題