6

null 可能な DateTime を含む ac# オブジェクトをシリアル化する場合、null 値を XML ファイルから除外する方法はありますか?

 <EndDate d2p1:nil="true" xmlns:d2p1="http://www.w3.org/2001/XMLSchema-instance" />
4

3 に答える 3

11

拡張プロパティを使用して、Specifiednull 値 (またはその他の値) を除外できます。基本的には、シリアル化されたプロパティと同じ名前の別のプロパティを作成Specifiedし、最後にブール値として単語を追加します。Specifiedプロパティがの場合、trueそれが制御しているプロパティはシリアル化されています。それ以外の場合、false他のプロパティは xml ファイルから完全に除外されます。

[XmlElement("EndDate")]
public DateTime? EndDate { get; set; }
[XmlIgnore]
public bool EndDateSpecified { get {
    return (EndDate != null && EndDate.HasValue); } }
于 2011-10-03T15:11:39.527 に答える
0

これが古いスレッドであることは知っていますが、他の誰かがこれを見つけた場合:

プロパティごとに public メソッドを実装して、シリアル化する必要があるかどうかを確認することもできます。規則は次のとおりです。

bool ShouldSerialize[YourPropertyName]();

たとえば、あなたの場合

public bool ShouldSerializeEndDate(){
    return (EndDate != null && EndDate.HasValue);
}

オプションでシリアライズするプロパティごとにこれを行います。

于 2014-09-27T09:52:19.233 に答える
0

MSDN リンク

これにより、null オブジェクトに対して空の要素が必要かどうかを指定できます

于 2011-10-03T15:11:36.150 に答える