DB からデータを取得しています。 DBObject データに null ではない空の値 ("") がある場合、その値を XML シリアル化から除外したいと考えています。
EventComment event = new EventComment();
event.Comments = datalogic.GetComment();
if(event.Comments != String.Empty){
//Add Logic
}
SerializeToXmL(event)
//dataLogic Class
public string GetComment()
{
var datalink = _unitOfWork.GetRepository<tbl1>()
.GetFirstOrDefault(predicate: source => (source.id == id));
return datalink .comment;
}
null 値を使用できることはわかっていますが、変数に null 値を代入したくありません。 null から別のソリューションを取得できますか。 XML シリアル化後、現時点では空のタグが取得されています。
<comment/>
あなたが連載しているものは何ですか?それは null ですか、それとも空 ("") ですか?
– マーク・グラベル
2020 年 9 月 3 日 9:17
シリアライズ中 ( " ")。
– ニーラジ・クマール
2020 年 9 月 3 日 9:18
------------------------
null 値はすでに除外されています。空の文字列 ("") を無視することについて話している場合は、「条件付きシリアル化」になります。あなたの友だちです。多くのシリアライザー (XmlSerializer を含む) は、よく知られたパブリック bool ShouldSerialize*() パターンを通じてこれをサポートしています。例:
public class Foo
{
[XmlElement("comment")]
public string Comment { get; set; }
public bool ShouldSerializeComment() => !string.IsNullOrEmpty(Comment);
}
これを空の Comment でシリアル化すると、Comment メンバーはシリアル化されません。これを簡単に拡張して、たとえば次のような他のロジックを適用することができます。
public bool ShouldSerializeComment() => !string.IsNullOrWhiteSpace(Comment);