【发布时间】:2009-05-11 07:37:02
【问题描述】:
我们编写了一个 Web 服务,它使用一个简单的实体转换器将 DTO 的值映射回“真实的”服务器端业务对象。作为本次练习的一部分。我们遇到了显式设置 null 值 和 未设置 值的客户端之间的“有趣”区别。
问题本质上是我们想要在真实的业务对象上设置一个默认值如果客户端没有显式设置一个值,但是使用标准的可空类型没有办法判断一个客户明确表示“将此设置为空”或只是不设置它。
这里的解决方案显然是某种“标志”。
在业务对象中,我们可以使用在属性设置器中设置的私有“IsDirty”标志在内部跟踪字段的状态,但 DTO 只真正指定了一个接口,因此这意味着将这些数据公开给公众。这留下了许多实现选项。语言是 C#(所以是静态类型的)所以...
- 我们可以在每个属性上公开一个“IsSet”标志吗?
- 我们可以将每个属性公开为具有 .Value 和 .IsSet 属性的类吗? 等等等等。
您将如何选择在数据合同上公开这些“标志”? 您认为最佳实践是什么?
对此的任何意见将不胜感激。
【问题讨论】:
标签: wcf design-patterns datacontract