我正在添加一个“舍入”业务规则,以将小数属性值四舍五入到单独整数属性中指定的小数位数。如果两个属性都是相关业务对象的成员,则此方法效果很好。如以下 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 层深,看来这需要重新设计我们的代码生成方案)。