我正在添加一个“舍入”业务规则,将十进制属性值舍入为单独的整数属性中指定的小数位数。如果两个属性都是相关业务对象的成员,则此方法很有效。如下面的VB.Net代码......
BusinessRules.AddRule(New Round(_decimalProperty, _precisionProperty))
我有一个私有的Round类,它继承自CommonBusinessRule,其构造函数如下:
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之后是否有任何时间点,我可以添加新的业务规则?如果是这样,用什么方法?还有另一种方法吗?
我们已经考虑将对父业务对象(通过构造函数)的引用传递给子项,但是现在已经决定不采用这种方法(孩子实际上是6级深度,看起来这需要我们的工作重做代码生成方案)。
答案 0 :(得分:1)
BusinessBase中的父属性通常由BusinessListBase用于与其子级保持关系。父属性实际上不是(不应该?)在那之外使用。
当我有一个具有影响子对象的属性的父对象时,我将该规则放在父对象中,然后该子对象将调用子对象上的任何规则。您可以传入您喜欢的任何值,甚至可以在子项上拥有该属性的副本,并将其设置为父属性更改。