0

我正在添加一个“舍入”业务规则,以将小数属性值四舍五入到单独整数属性中指定的小数位数。如果两个属性都是相关业务对象的成员,则此方法效果很好。如以下 VB.Net 代码中...

BusinessRules.AddRule(New Round(_decimalProperty, _precisionProperty))

我有一个继承自 CommonBusinessRule 的私有 Round 类,它的构造函数如下:

Public Sub New(decimalProperty As IPropertyInfo, precisionProperty As IPropertyInfo)
    MyBase.New(decimalProperty)

    InputProperties = New List(Of IPropertyInfo)()
    InputProperites.Add(decimalProperty)
    InputProperties.Add(precisionProperty)
End Sub

每当任一属性更改时,这都会触发规则 Execute,并且 Execute 代码会完全按照我的意愿循环。

问题:我现在遇到一种情况,precisionProperty 是 Parent 业务对象的属性。当调用为子业务对象添加业务规则的CSLA方法时,子业务对象的Parent成员为null,所以我无法获取到父属性的引用。在 Parent 字段不再为空之后,是否有任何时间点允许我添加新的业务规则?如果有,用什么方法?还有另一种方法吗?

我们已经考虑将对父业务对象的引用(通过构造函数)传递给子级,但现在决定不采用这种方法(子级实际上有 6 层深,看来这需要重新设计我们的代码生成方案)。

4

1 回答 1

1

BusinessBase 中的 parent 属性通常由 BusinessListBase 用来保持与其子项的关系。parent 属性确实不是(不应该?)在此之外使用。

当我有一个具有影响子对象的属性的父对象时,我将规则放在父对象中,然后父对象将调用子对象上的任何规则。您可以传入您喜欢的任何值,甚至可以在子属性上拥有一个属性副本并在父属性更改时设置它。

于 2012-08-04T23:46:43.817 回答