null 可能な DateTime を含む ac# オブジェクトをシリアル化する場合、null 値を XML ファイルから除外する方法はありますか?
<EndDate d2p1:nil="true" xmlns:d2p1="http://www.w3.org/2001/XMLSchema-instance" />
null 可能な DateTime を含む ac# オブジェクトをシリアル化する場合、null 値を XML ファイルから除外する方法はありますか?
<EndDate d2p1:nil="true" xmlns:d2p1="http://www.w3.org/2001/XMLSchema-instance" />
拡張プロパティを使用して、Specified
null 値 (またはその他の値) を除外できます。基本的には、シリアル化されたプロパティと同じ名前の別のプロパティを作成Specified
し、最後にブール値として単語を追加します。Specified
プロパティがの場合、true
それが制御しているプロパティはシリアル化されています。それ以外の場合、false
他のプロパティは xml ファイルから完全に除外されます。
[XmlElement("EndDate")]
public DateTime? EndDate { get; set; }
[XmlIgnore]
public bool EndDateSpecified { get {
return (EndDate != null && EndDate.HasValue); } }
これが古いスレッドであることは知っていますが、他の誰かがこれを見つけた場合:
プロパティごとに public メソッドを実装して、シリアル化する必要があるかどうかを確認することもできます。規則は次のとおりです。
bool ShouldSerialize[YourPropertyName]();
たとえば、あなたの場合
public bool ShouldSerializeEndDate(){
return (EndDate != null && EndDate.HasValue);
}
オプションでシリアライズするプロパティごとにこれを行います。
これにより、null オブジェクトに対して空の要素が必要かどうかを指定できます