【发布时间】:2010-03-25 14:35:58
【问题描述】:
我有两个字段,我需要生成一个属性,使用 Microsoft 企业库验证,以便其中一个或必须有一个值,但两者不能同时为空。
【问题讨论】:
标签: validation enterprise-library
我有两个字段,我需要生成一个属性,使用 Microsoft 企业库验证,以便其中一个或必须有一个值,但两者不能同时为空。
【问题讨论】:
标签: validation enterprise-library
使用自定义验证器。
[HasSelfValidation]
public class ValidateMe {
[SelfValidation]
public void ValidateFieldNotNul(ValidationResults validationResults)
{
.. start psudo code
if( xor)
validationResults.AddResult( new ValidationResult("One must not be null",...));
}
}
【讨论】:
验证应用程序块有一个PropertyComparisonValidator,可让您将一个属性与另一个属性进行比较。不幸的是,这个验证器只允许ComparisonType of: Equal, NotEqual, GreaterThan, GreaterThanEqual, LessThan, LessThanEqual 所以这实际上对你没有帮助。
我认为你有两个选择:
自我验证(由@Nix 展示)可能是最简单的,但需要在您有该要求的每个场景中重新实现(至少要让挂钩调用通用方法)。
创建custom validator 将生成可以添加到配置中或直接归因于实体的代码,并且可以轻松重用。
自定义验证器肯定会做更多工作,但如果您需要重用(例如,它可以跨应用程序重用)或者更喜欢这种设计,那么它可能是值得的。
【讨论】: