1

我知道 FieldManager 在 BusinessBase 中作为受保护的属性公开。为什么 PropertyInfoManager 的设置方式不同?据我所知,PropertyInfoManger 维护一个类型字典和每个类型的 PropertyInfo(s) 的列表。在 BusinessBase 中维护一个 PropertyInfo(s) 列表似乎更容易,类似于 FieldManager 的工作方式。在 PropertyInfoManager 中完成了很多工作来将注册的 PropertyInfo 与它们所属的类型联系起来。

我确信这是有原因的,我只是没有看到或理解它。我只是想更多地了解 CSLA 以及为什么事情是这样构建的。

4

1 回答 1

0

我可以看到这样做有两个主要原因:

1) 线程安全——PropertyInfoManager 类基本上是一个字典的静态包装器,它允许您为一个类型注册 PropertyInfo(s) 并为一个类型获取 PropertyInfo(s)。它处理锁定以确保线程安全。

2) N-Level Undo - CSLA 的这个特性增加了存储字段值的复杂性,受保护的 FieldManager 负责维护 BusinessBase 的所有托管支持字段的值。为此,FieldDataManager 类需要访问该类型的 PropertyInfo(s),因此将它们放在一个地方而不是从 BusinessBase 传递一些 List 是一种更好的方法。

在这种情况下,FieldDataManager 和 PropertyInfoManager 类增加了模块化,我确信在设计时受到关注点分离 (SoC) 和单一责任原则 (SRP) 的影响。

我也在学习 CLSA,并在此过程中从框架本身学到了很多关于面向对象设计的知识。我会推荐这本书并阅读源代码以继续了解有关 CSLA .Net 的更多信息。

于 2011-02-28T18:29:32.267 回答