【发布时间】:2012-03-15 11:07:13
【问题描述】:
我们正在为一个客户开发一些 WCF 网络服务。我们的消息契约是通过在我们的类及其属性之上使用 DataContract 和 DataMember 属性来定义的。 DataMember 属性有一些额外的属性,允许我们添加一些额外的规则。例如,如果一个属性应该始终可用,我们使用 (IsRequired=true);来表明这一点。接收或发送消息时会检查这些规则。
[DataContract]
public class TestClass
{
[DataMember(IsRequired = true)]
public int RequiredValue { get; set; }
}
然而,在我们的测试中,我们注意到它不起作用,因为在客户端,RequiredValueField 由 null 初始化,所以通过一些阅读我发现了这个属性,EmitDefaultValue=false,所以通过使用两者,我得到了想要的结果
[DataContract]
public class TestClass
{
[DataMember(IsRequired = true, EmitDefaultValue=false)]
public int RequiredValue { get; set; }
}
但是假设,如果某些客户端初始化RequiredValue = 0 然后调用服务方法,它会再次报错。 那么如何释放我的 APIusers 选项,让他们可以在此成员中传递任何东西,包括零,但是当他们省略时,只有它应该给出错误?
【问题讨论】:
标签: wcf