[XmlElement(IsNullable = true)]をクラスレベルで宣言して、クラス内のすべてのプロパティがヌルであってもXMLにシリアル化されるようにする方法はありますか?クラスレベルで[XmlElement(IsNullable = true)]を宣言する
public BankAccount BankAccount { get; set; }
むしろデフォルト欠けている要素よりも、<BankAccount xsi:nil="true" />
を生じるはずです。
私はこれを試しましたが、コンパイラは(正しく)属性がクラス宣言に有効ではないことを示しています。
この理由は、これをすべてのプロパティに指定したくないからです。
編集:これは私が使用していますシリアライズ方法である:
var serializer = new XmlSerializer(FormType);
var stream = new MemoryStream();
serializer.Serialize(stream, form);
あなたは 'XmlSerializer'または' DataContractSerializer'でこれをやっている、とあなたは、Webサービスでこれをやっていますか? Webサービスの外部で 'XmlSerializer'を使用している場合は、XmlAttributesOverride'のオーバーロードを使用して属性を強制的に使用することができます(ただしこれは試したことはありません)。これは古いASMXスタイルのWebサービスでも利用可能ですが、 'XmlSerializerFormatAttribute'を使用してWCFでこれを行うことはできません。 –
'XmlSerializer'は、クラスをxmlファイルに永続化します。 – Darbio
'XmlAttributesOverride'クラスを見て、そのインスタンスを受け入れる' XmlSerializer.Serialize'のオーバーロードを使う価値があります。私の理解では、すべてのXml属性の動作をオーバーライドして明示的に 'XmlAttributeOverride'インスタンスでオーバーライドを指定することができます。私はそれを行ったことがないので、私はそれがどのように動作するかはわかりませんが、私はこれと同じ質問を答えとして見たことが分かっています。 –