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