![]() |
1
1
这将导致设置childs parent属性将调用父方法,而所有其他逻辑都可以放在这些方法中。 应收账 |
![]() |
2
1
只需在parent属性的set accessor中编写将子级添加到父集合的逻辑。 |
![]() |
3
1
也许有一种更聪明的方法可以做到这一点,但最终您只需要确保设置父/子关系的每种方法都检查其他方法(即添加子检查以查看父属性是否已设置,以及设置父属性检查以确保父项包含子项)。
在删除子级之前,我更改了\u Parent的值,因为子级。父级否则将从Parent.Add/RemoveChild代码。 |
![]() |
4
0
我将实现我自己的ISet,并在其中实现父级跟踪。使用常规的HashSet来完成存储对象的工作,但是在类中做一些额外的工作。
但是,这并没有实现您提到的一件事:“如果child有以前的父级,那么该父级的Children集合不再包含child”,因为您还说过“某些实体将具有多个子集合”。
|
![]() |
5
0
我不能给出一个好的代码答案,因为我不理解该域的语义。
当parent是children的聚合根时,我将实现如下所示向父级添加一个新的子级:
这个答案用一行代码概括:“对于应用程序中的所有状态操作,您需要一个具有名称的方法来说明它的作用。” 我看到你的一个规格有问题:只有父级是聚合根。在这种情况下,如果没有父对象,就永远不会使用子对象。这使得双向关系毫无用处,因为当您访问父对象的子对象时,您已经知道父对象。在DDD中,双向关系很难管理,所以最好的解决方案就是避免它们。我知道在使用NHibernate时有几个原因不能避免它们。 下面的代码具有双向关系,并使用内部帮助程序方法解决域处于临时无效状态的问题。内部方法只能从域程序集调用,并且不对外公开。我不太喜欢这种方法,但这是我认为最糟糕的解决方案。
|
|
Robert King · Unity C#语法问题-转换位置 1 年前 |
![]() |
JBryanB · 如何从基本抽象类访问类属性 1 年前 |
|
law · 检查答案按钮的输入字符串格式不正确 2 年前 |
![]() |
i_sniff_ket · 在unity之外使用unity类 2 年前 |