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 が親ビジネス オブジェクトのプロパティである状況があります。子ビジネス オブジェクトのビジネス ルールを追加するための CSLA メソッドが呼び出されると、子ビジネス オブジェクトの親メンバーが null であるため、親のプロパティの参照を取得できません。親フィールドが null ではなくなった後、新しいビジネス ルールを追加できる時点はありますか? もしそうなら、どのような方法で?別のアプローチはありますか?

親ビジネス オブジェクトへの参照を (コンストラクターを介して) 子に渡すことを検討しましたが、現時点ではこのアプローチに反対することにしました (子は実際には 6 レベルの深さであり、これにはコード生成スキームの再作成が必要になるようです)。 )。

4

1 に答える 1