我知道在BusinessBase中FieldManager是作为一个受保护的属性公开的。为什么PropertyInfoManager不是以同样的方式设置?据我所知,PropertyInfoManger维护了一个类型字典和每种类型的PropertyInfo列表。在BusinessBase中只维护一个PropertyInfo列表似乎更容易,类似于FieldManager的工作方式。在PropertyInfoManager中,要将注册的PropertyInfo与它们所属的类型联系起来,需要做大量的工作。
我相信这是有原因的,我只是看不到或理解得不够。我只是想了解更多关于CSLA的知识,以及为什么事情是这样构建的。
发布于 2011-03-01 02:29:32
我可以看到这样做的两个主要原因:
1)线程安全- PropertyInfoManager类基本上是一个围绕字典的静态包装器,它允许您为类型注册PropertyInfo(s)并获取类型的PropertyInfo(s)。它处理锁定以确保线程安全。
2) N级撤销- CSLA的这一功能增加了存储字段值的复杂性,受保护的FieldManager负责维护BusinessBase的所有托管支持字段的值。为此,FieldDataManager类需要访问该类型的PropertyInfo,因此将这些放在一个位置而不是从BusinessBase传递一些列表是一种更好的方法。
在这种情况下,FieldDataManager和PropertyInfoManager类增加了模块性,我确信在设计时受到了关注点分离(SoC)和单一责任原则的影响。
我也在学习里昂证券,在这样做的过程中,我从框架本身学到了相当多的面向对象设计知识。我推荐The Book和阅读The Source Code来继续学习更多关于CSLA .Net的知识。
https://stackoverflow.com/questions/5145276
复制相似问题