我想基本上为某些类对象创建一个简单的验证系统
public interface IMyClassRule {
bool IsValid(MyClass obj, Context someAdditionalData)
}
Run Code Online (Sandbox Code Playgroud)
使用DI框架自动发现规则列表,而不是事先修复.
假设我有一个VeryGeneralDefaultRuleAboutAllObjects : IMyClassRule和SpecificCaseWhenGeneralRuleDoesNotApply : IMyClassRule.如何以通用方式处理此解决方案(在某些情况下基本上允许通过任何其他规则覆盖任何规则)?
解决方案我考虑过
规则或规则结果的数字优先级
专业:易于理解和实施.
反对:我需要知道/猜测原规则的优先级.不明显哪个优先(1或1000)?对于不适用特定情况的情况,需要一些"不关心"规则结果.
基于类型的优先级(基本.Before<VeryGeneralRule>)
亲:具体说明你想要实现的目标.
Contra:需要明确引用原始规则.订购逻辑将很复杂.对于不适用特定情况的情况,需要一些"不关心"规则结果.
还有其他/更好的选择吗?
如何添加将一些条件注入规则实例(例如接口实例)的功能IRuleApplicability。您可以将其与类似于 #2 的内容结合起来,并使用所有规则的基类在应用规则之前检查适用性。
| 归档时间: |
|
| 查看次数: |
199 次 |
| 最近记录: |