私たちは、拡張メソッドは、ビジネスルールエンジンを構築するために使用することはできますか?

StackOverflow https://stackoverflow.com/questions/1529283

質問

私はこのような何かを探しています。

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);

私は深く潜ると溺れ前にお聞きしたかったのです。

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

事前に感謝します。

役に立ちましたか?

解決

私はあなたが可能で何を意味するかわかりません。それは、このようにルールエンジンを書くことは確かに可能だとあなたはこれを達成する方法の概要をデモを行ってきました。

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

他のヒント

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

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top