我正在查看 Lhotka CSLA.NET 对象库 (Lhotka.NET)。这似乎很有趣,但没有意义的一件事是业务规则是用 C# 编写的。如果这些不在代码之外进行编码(即使它是一个与应用程序的主要逻辑不耦合的库,规则仍然可以更改并需要重新编译)。
谢谢
我正在查看 Lhotka CSLA.NET 对象库 (Lhotka.NET)。这似乎很有趣,但没有意义的一件事是业务规则是用 C# 编写的。如果这些不在代码之外进行编码(即使它是一个与应用程序的主要逻辑不耦合的库,规则仍然可以更改并需要重新编译)。
谢谢
不,那将是内部平台反模式。
如果您创建的系统足够先进,可以处理您可能需要的任何业务规则,那么它会比必须的复杂得多。
CSLA 业务规则只是代表,如果规则通过则返回 true,否则返回 false。
由于业务规则只是代码,因此您可以自由地做任何您喜欢的事情。如果您愿意,您可以创建一个规则引擎,如果您愿意,可以在对象之外处理规则。
如果您也希望使用基于属性的规则,CSLA 还支持基于属性的 DataAnnotations。
从 Csla 4 开始,不再支持静态规则方法。相反,您创建一个类,它是命名空间BusinessRule
中的子类Csla.Rules
。这允许更好的重用和更容易的单元测试。