2009-04-02 6 views
18

XMLにシリアル化するオブジェクトがあります。オブジェクト内のプロパティーの1つがnullの場合、ネイティブ・シリアライゼーションはこれを属性として追加するために無視します。これは正常な動作ですか、もしそうなら、それを無効にする方法がありますか?XMLシリアル化とnull値 - C#

例:サニーズ答えはちょうどあなたにフィットしない場合は

public class Test 
{ 
    [XmlAttribute] 
    public string value {set; get; } 

    [XmlAttribute] 
    public string key {set; get; } 
} 

値がnullの場合は、私が

<Root> 
    <Test key="blah"> 
</Root> 

答えて

33
+0

私はこれが好きで、個々の要素に適用できます。膨大な数のフィールドを持つ与えられたクラス(1000としましょう)に対して、これがすべてのフィールドのデフォルトであることをそれぞれのフィールドに触れることなく指定する方法はありますか? – froggythefrog

+0

ところで、私は1つのクラスに非常に多くのフィールドがあるわけではありません。実際には、WCFサービス用にたくさんのクラスがあり、それらをシリアル化してRESTメッセージを作成したいと考えています。私は、サービスに価値や不足に関わらず、すべてのフィールドを含めるようにします。 – froggythefrog

+1

これはフレームワークの問題です(あなたのサービス==フレームワーク:))。私。すべてのサービスが同じように動作するようにするには、データクラスを変更しないでください。使用するシリアライザを変更します。あなたはWCFにフックすることができ、デフォルトのシリアライザをお手元のものに置き換えます。 –

1

を取得するには、シリアル化プロセスをカスタマイズすることができますIXmlSerializableインターフェイスを実装することによって