我希望做这样的事情。

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

OR

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

productBiz.ApplyRules(rulesetDelegate);

只是想问问我前潜入深海淹死。

什么是这种方法???

的潜在的缺陷

在预先感谢

有帮助吗?

解决方案

我不知道你所说的可能是什么意思。这当然可以这样写一个规则引擎,你已经demo'd如何实现这一目标的大纲。

不要忘了扩展方法上的静态方法顶部只是语法糖。询问是否可以做扩展方法编程的X型不超过询问是否可以做静态方法编程的X型不同。静态方法可能不会那么好,但他们也同样强大。

其他提示

如果你正在寻找改变在运行时的规则,那么你可能要考虑更多类似 MEF 或相似。

直到您编译,那么它的设置并锁定,从你的意见,你要寻找的运行时间灵活性的声音

您的解决方案是罚款。

看的业务规则CSLA http://lhotka.net/ 实施。在您定义的规则瓦特/特定的签名,并将其添加到该对象的规则存储,无论是在一类级别或实例级别。您正在尝试做的语法是倒胃口,但该方法(通过定义其在运行时执行静态方法的业务规则)是CSLA做什么。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top