如果它来自类,为什么我需要设置IsRequired?

时间:2011-09-03 07:51:45

标签: wcf

我很难理解以下情况:

主机有一个具有operationMethods的服务 例如Calc (Myclass a)

MyClass包含2个属性(prop1prop2

现在,客户也可以通过代理了解MyClass,并且也应该通过引用知道合同。

所以当客户端创建MyClass的新实例(发送它)时,如何丢失一个道具 ???

当他实例化新的MyClass时 - 两个prop都被初始化(null或者什么都有)。所以为什么我需要isRequired

1 个答案:

答案 0 :(得分:1)

无法保证他们使用何种语言或如何制定他们的soap请求,因此他们生成它的方式可能不会使用包含该属性的生成类。消息中是否存在必需的要求

与IsRequired的互动

如数据协定版本控制中所述,DataMemberAttribute属性具有IsRequired属性(默认值为false)。该属性指示在序列化数据被反序列化时是否必须存在给定数据成员。如果IsRequired设置为true(表示必须存在值)并且EmitDefaultValue设置为false(表示如果将值设置为其默认值,则该值不得出现),此数据成员的默认值不能为序列化因为结果会相互矛盾。如果将此类数据成员设置为其默认值(通常为null或0)并尝试进行序列化,则抛出SerializationException。