1

这是场景,我正在使用 csla 3.8 / c#.net 开发应用程序,该应用程序将具有不同的模块。它就像一个ERP,它将有会计、每日时间记录、招聘等模块。

现在的要求是检查每个模块的公共实体并从中构建一个“平台”(<-老板这样称呼它)。例如,DTR 将有一个实体“员工”,Recruitment 将有一个“申请人”,因此您可以从这两个实体中派生出一个可以放入平台的通用实体是“人员”。“人”将包含典型的信息,如姓名、地址、联系信息等。

我知道这听起来像 OOP 101。问题是,我不知道该怎么做。我多么希望它只是一个简单的继承,但要求就像创建某种 API 以供使用 CSLA 的模块使用。

在 csla 中,您可以正确地创建智能对象,从 csla 的基类(如 businessListbase、readonlylistbase 等)继承,对吗?例如,如果我创建了一个 businessbase 申请人类,它将具有工资需求、可用日期等属性。现在对于个人信息,我将需要来自“平台”的“人”并将其实施到申请人类。

所以总而言之,我有几个问题:

  1. 如何打造这样的平台?
  2. 如果这样的平台是可能的,它将如何在每个模块的实体上实现?(我已经从 csla 的基类继承)
  3. 如果 incase 1 和 2 是可能的,它对应用程序的开发和维护有优势吗?

我问#3的原因是因为我看到它的方式,即使我能够为此创建一个平台,我也需要在我的模块实体上定义平台实体的属性,以便进行验证和所有.

4

2 回答 2

1

您对从基类继承是正确的。

  1. 我将从设计您的基础实体开始,而不包括任何关系。然后我将创建从新创建的实体继承的类,并添加从父实体从数据库中提取的子属性(通过 FK 关系)。我还建议查看我们的CSLA 3.8.2 模板。它们同时具有 VB.NET 和 C# 风格,将使这项任务变得更加容易。
  2. 是的,这是可能的,只需按照 #1 中列出的步骤进行操作即可。
  3. 我不确定优点或缺点,但将来应该很容易维护。您的派生类可以在基类的规则之上添加规则/完全控制基类的规则。

谢谢 -Blake Niemyjski(CodeSmith CSLA 模板的作者)

于 2010-03-22T11:07:05.887 回答
0

“平台”实体或我们现在称之为泛型 BO 的主要目的是用于代码重用,因此当我们将来添加模块(如会计或采购)时,我们可以使用这些通用模块。

最后,我的解决方案是确定多个模块将使用的对象并将其分离到不同的项目中,以便其他模块在需要来自该项目的对象时才使用该项目。

至于我的第一个例子,申请人(招聘),员工(日常记录)和人(“平台”)。发生的事情是 Person 被放在通用 BO 项目上。申请人和雇员都只是将人 BO 用作子财产。

感谢布莱克的回复。顺便说一句,我们真的在使用 codesmith。仍然感谢您的建议。干杯!

于 2010-08-05T09:43:54.827 回答