1

我正在学习使用 CSLA 框架用 VB.net 编写的大型遗留应用程序。许多对象似乎继承自 BusinessBase 和 BusinessListBase。当我在 Visual Studio 中“转到定义”时,我看到这些类是 CSLA 命名空间的一部分。这些课程是什么?它们在 CSLA 框架中扮演什么角色?它们与根对象和子对象等其他 CSLA 概念有何关系?

4

1 回答 1

9

BusinessBase 和BusinessListBase 是所有可编辑(即非只读)业务对象继承的抽象基类。任何一个都可以是根对象或子对象,具体取决于业务对象图。这些类为应用程序中的实例类提供 CSLA 框架属性和方法,例如 IsNew、IsDirty 和 Save()。基类还完成与 DataPortal 通信、检查子类定义的业务规则、管理对象的编辑/撤消级别等繁重的工作。简而言之,业务对象继承这些类之一,以便与 CSLA 框架的其余部分集成。在 CSLA 框架的范围内,如果业务对象需要执行任务或公开属性,这些类就是发生这种情况的地方。

这些类不做的一些事情

  • 定义业务属性(它们确实定义了对象/生命周期管理属性,例如 IsNew、IsSavable 等,但没有定义保存相关业务数据的属性)
  • 初始化业务属性(同样,CSLA 的管理属性由基类处理)
  • 分配业务规则(如“客户名称必须有值”)
  • 与数据库对话
  • 将对象标记为可序列化
  • 通过调用确定哪个 foo.DataPortal_X 方法被执行DataPortal.Fetch<foo>(args);(由 DataPortal 完成)

BusinessListBase 用于列表类,并且继承了 .NET 基本列表功能,因此作为列表的 CSLA 业务对象只需要继承 BusinessListBase。您可以按照您的期望从 BusinessListBase 添加、删除等对象,因为该对象是一个列表。

ReadOnlyBase 和 ReadOnlyListBase 是抽象基类,它们的用途与其业务对应物相同,但也确保对象是只读的。它们提供的主要是业务基础的一个子集,还有一些额外的约束,例如阻止属性实现 setter。

我建议查看这个问题以获取有关 CSLA 的一些权宜之计信息。

于 2012-04-10T20:09:24.733 回答