问题描述
我正在从数据库中获取数据。如果DBObject数据的空值("")
不为null,那么我想从XML Serilization中剔除该值。
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获得不同的解决方案吗? XML序列化后,我现在得到的是空标签。
<comment/>
解决方法
null
值已被排除;如果我们正在谈论忽略空字符串(""
),那么“条件序列化”是您的朋友。许多序列化程序(包括XmlSerializer
)通过众所周知的public 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);