2

我是“使用 C# 的 DDD”世界的新手,我有一个关于在哪里确保某些验证规则的问题。例如,我的一个实体有一个闭包的概念,如果他的状态是 lock ,则不能更改其他属性。

放置此验证的最佳位置在哪里?将此规则带到应用层似乎不正确,仅禁止字段编辑和每个 setter 内部似乎违反了 DRY 原则。有什么建议吗?

4

1 回答 1

1

如果该验证规则是您的域的一部分,那么域对象绝对是放置逻辑的正确位置。

如果您担心保持代码干燥,您有几个选择:

  1. 看看使用 Unity 或 Castle 进行拦截

  2. 将所有 setter 设为私有,并有一个UpdateIfNotLocked()方法,该方法采用 anExpression指示要更新的属性、属性的新值,Expression如果对象未处于锁定状态,则创建、编译和执行 an 以设置该属性

  3. 咬紧牙关,在这个班级的二传手中有警卫。

方法 1 和 2 都可能是合理的工作量/麻烦,因此在这种情况下您可能希望采取务实的方法。

于 2012-05-31T20:27:43.427 回答