2

私はこのようなことをしようとしています

public class ProductBiz: BizBase<Product> {

public List<String> BrokenRules {get;set;}

// Some kind of data + biz operation implementation

}

public static class ProductBizExtensions{

public ProductBiz Rule1(this ProductBiz prodBiz)
{}
public ProductBiz Rule2(this ProductBiz prodBiz)
{}

public bool ApplyRules (this ProductBiz prodBiz, Func<ProductBiz,bool> ruleset){}
}

次に、クライアントコードで次のように使用します

productBiz.Rule1().Rule2();
productBiz.Rule2().Rule1();

また

// create multicasted delegate of type Func<ProductBiz,bool> say rulesetDelegate

productBiz.ApplyRules(rulesetDelegate);

深く潜って溺れる前に聞きたかった。

このアプローチの潜在的な落とし穴は何ですか???

前もって感謝します

4

3 に答える 3

2

CSLA http://lhotka.net/でのビジネス ルールの実装を見てください。その中で、特定の署名を使用してルールを定義し、クラス レベルまたはインスタンス レベルでオブジェクトのルール ストアに追加します。あなたがやろうとしていることの構文は不快ですが、メソッド (実行時に実行される静的メソッドを介してビジネス ルールを定義する) はまさに CSLA が行うことです。

于 2009-10-07T04:37:52.083 に答える
2

可能性の意味がわかりません。この方法でルール エンジンを作成することは確かに可能であり、これを実現する方法の概要をデモしました。

拡張メソッドは、静的メソッドの上にある構文糖衣にすぎないことを忘れないでください。拡張メソッドを使用して X タイプのプログラミングを実行できるかどうかを尋ねることは、静的メソッドを使用して X タイプのプログラミングを実行できるかどうかを尋ねることと同じです。静的メソッドは見栄えがよくないかもしれませんが、同じくらい強力です。

于 2009-10-07T03:30:57.790 に答える