![]() |
1
5
我建议创造一些与
这将遵循既定的模式,以便客户机已经熟悉公开的接口——其中三个接口已经存在。使用现有接口还将允许与其他已经存在的.NET技术(如wpf)进行更适当的交互(wpf与
我希望
如果要添加取消支持,只需添加一个可写的
我想这是你的选择2。这是一种可行的方法,因为要与其他.NET技术(用于监视不断变化的集合)进行正确的互操作,您无论如何都必须为
|
![]() |
2
2
我建议分开处理。我觉得更清楚。 编辑: 您可能希望在插入、插入等前后对事件进行cosider排序,或者像vb成员在插入之前、插入之后对事件进行cosider排序一样。这将给用户更多的灵活性。 |
![]() |
3
2
看看这个 link ,可能这就是您要查找的,一个基于列表的通用对象,它充当列表,但具有内置事件,如beforeitemadded、itemadded、beforeitemremoved、itemremoved和itemseared。 希望这有帮助,汤姆。:) |
![]() |
4
2
实际上,你会惊讶于你能如此轻松地创建一个这样的集合。
看一看
我会推荐选项1,因为它更清晰和简单。 下面是一个示例,您可以将其用于以下目的:
您还可以修改ListChangeEventArgs,使其具有名为“cancel”的bool属性,并控制Wheter来进行更改或不在集合中。 如果您需要这样的功能,After事件也很有用。 当然,您不必使用每个集合的所有事件,或者如果确实有必要,根据您需要此功能的原因,可能有其他方法来解决问题。 编辑: 如果您真的只想验证这些项并将它们的父属性设置为实体实例,那么实际上您可以编写一个这样做的集合,或者用另一种方式概括问题的集合。您可以向它传递一个委托来验证项目,另一个委托告诉它在添加或删除项目时应该做什么。 例如,您可以使用操作委托来实现这一点。 你可以这样消费它:
这种方法的主要好处是,您不必费心处理事件或委托,因为您所需要的所有内容都可以使用lambda表达式编写,但是如果您需要更高级的内容,则可以始终使用真正的委托而不是它们。 这是集合的一个示例:
出于这样的目的,我认为这是最干净的方法。 |
![]() |
Tony Raimo · 域实体是否应该调用存储库? 7 年前 |
![]() |
Seb · DDD只读存储库返回“值对象” 7 年前 |
![]() |
tlt · 使用嵌套对象和大集合进行聚合根优化 7 年前 |
![]() |
PatrickSJ · DDD,状态对象/值对象 7 年前 |
![]() |
msmani · DDD更改聚合根id 7 年前 |
![]() |
DuskMcDusk · 逻辑和性能中的聚合根冲突 7 年前 |