【发布时间】:2018-10-26 23:07:27
【问题描述】:
我有一个业务规则列表,我需要将其应用于 json 数据,然后通过 http post 将其输出。
规则规定了如何根据字符串的类型和值来格式化字符串。 例如:
- 名字,首字母大写。
- 中间名:如果是一个字母,则附加“.”最后
具有挑战性的部分是我希望能够在不更改代码的情况下添加/删除业务规则。所以我考虑将规则及其定义存储在一个 sql 表中。
表格如下所示:
| RuleName | Action |
|---------------------|------------------ |
| padLeft | PadLeft<x> |
|---------------------|------------------ |
我不知道如何将规则转化为他们应该采取的行动。我遇到了this,这与我正在寻找的非常接近。也许我过于复杂了,所以我愿意接受不同的建议
【问题讨论】:
-
你描述的那些规则需要一个完整的编程语言,或者非常接近它的东西。您可以搜索 .NET 表达式评估器库(FLEE、NCalc 等),如果有一个可以满足您的所有需求,请将表达式作为字符串存储在数据库中。我不建议您为这个项目编写自己的(作为一个项目本身,我不能再推荐任何东西,至少就编程而言)。
-
当您说“不更改代码”时 - 您的意思是不更改 任何 代码还是不更改代码的其他部分 - 就像您想要隔离他们自己的类中的业务规则?
-
我可能会对“which”规则进行某种枚举,并将其存储在您的数据库中。然后你可以使用一个开关关闭它,然后迭代规则以从数据库中应用。
标签: c# linq pattern-matching predicate rules