我正在学习使用CSLA框架在VB.net中编写的大型遗留应用程序。许多对象似乎都继承自BusinessBase和BusinessListBase。当我在Visual Studio中“去定义”时,我看到这些类是CSLA命名空间的一部分。这些课程是什么?他们在CSLA框架中扮演什么角色?它们如何与其他CSLA概念(如Root Object和Child Object)相关?
答案 0 :(得分:7)
BusinessBase和BusinessListBase是所有可编辑(即非只读)业务对象继承的抽象基类。根据业务对象图,任一个都可以是根对象或子对象。这些类是在应用程序中的实例类上提供CSLA框架属性和方法的,例如IsNew,IsDirty和Save()。基类还执行与DataPortal通信的粗略工作,检查子类定义的业务规则,管理对象的编辑/撤消级别等。简而言之,业务对象继承其中一个类,以便将其自身与CSLA框架的其余部分集成。在CSLA框架的范围内,如果业务对象需要执行任务或公开属性,那么这些类就是发生的地方。
这些类不的一些事情是:
DataPortal.Fetch<foo>(args);
(由DataPortal完成)确定执行哪个foo.DataPortal_X方法BusinessListBase用于列表类,并且继承了.NET基本列表功能,因此作为列表的CSLA业务对象只需要继承BusinessListBase。您可以按照预期添加,删除BusinessListBase中的对象,因为该对象是一个列表。
ReadOnlyBase和ReadOnlyListBase是抽象基类,它们与业务对应物具有相同的用途,但也确保对象是只读的。他们提供的内容主要是业务基础的一个子集,还有一些额外的约束,例如阻止属性实现setter。
我建议您查看this question有关CSLA的一些权宜之计信息。