用于对象初始化问题的magic GET和SET

时间:2011-02-18 14:23:46

标签: c#-4.0 domain-driven-design

我想知道面向类DDD的最佳实践。

由于我在名为ChangeX(字符串x)的自定义setter中进行域验证,因此我可能会将其用作属性。

  

public virtual string example {get;   私人集; }

但是,这不是很好,因为它禁止我使用对象初始化功能,例如:

  

new Object {Example =“some example”   }

所以我为什么不将自定义集传递给属性集呢?像这样

  

public virtual string示例{get {   返回示例; } set {   ChangeExample(值); }}

这会导致任何问题吗?这是违反最佳做法的吗?

感谢。

2 个答案:

答案 0 :(得分:2)

这里的真正问题是使用setter。你为什么需要它们?

当您使用setter时,您将失去隔离 - 您可以从外部修改对象的状态,而不知道它们。这导致了程序代码。

相比之下 - 你应该让对象做某事(而不仅仅是修改他们的状态),最终可能导致他们改变自己的状态。

答案 1 :(得分:0)

我认为这个解决方案很好。设置setter的一个原因是确保您的underlay字段永远不会包含不正确的值。