【发布时间】:2014-04-08 16:07:29
【问题描述】:
我有一个允许外部应用程序更新我的数据库的 WCF 服务。我有一个更新操作合同,它接受外部应用程序应该设置的数据合同。我的问题是我无法区分设置为 null 和实际未设置的内容,因为当数据协定被序列化时,值始终为 null。考虑以下数据协定:
[DataContract, XmlRoot("Person")]
public class Person: BaseEntity
{
[DataMember, XmlElement]
public string Prefix { get; set; }
[DataMember, XmlElement]
public string FirstName { get; set; }
[DataMember, XmlElement]
public string MiddleName { get; set; }
[DataMember, XmlElement]
public string LastName { get; set; }
[DataMember, XmlElement]
public string MaidenName { get; set; }
[DataMember, XmlElement]
}
一个外部应用程序只能设置 FirstName 和 LastName 而忽略其余属性。但是当我的 WCF 服务收到请求时,其他属性设置为 null。所以我的 WCF 服务中的更新 statememt 会认为那些属性设置为空。我希望找到一种方法来确定未设置属性,以便我的更新语句可以忽略这些属性。
【问题讨论】:
-
Adam,很遗憾我不打算手动解析 xml 并依赖 XML 序列化。并且一个没有设置或者设置为null的XML元素,总是会被反序列化一样的,也就是null
标签: c# .net wcf xml-serialization