【问题标题】:Either or has to have a value but both can't be null at the same time要么要么必须有一个值,但不能同时为空
【发布时间】:2010-03-25 14:35:58
【问题描述】:

我有两个字段,我需要生成一个属性,使用 Microsoft 企业库验证,以便其中一个或必须有一个值,但两者不能同时为空。

【问题讨论】:

    标签: validation enterprise-library


    【解决方案1】:

    使用自定义验证器。

    [HasSelfValidation]
    public class ValidateMe {
    
    
        [SelfValidation]
        public void ValidateFieldNotNul(ValidationResults validationResults)
        {
           .. start psudo code
             if( xor)
                 validationResults.AddResult( new ValidationResult("One must not be null",...));
        }
    
    }
    

    【讨论】:

      【解决方案2】:

      验证应用程序块有一个PropertyComparisonValidator,可让您将一个属性与另一个属性进行比较。不幸的是,这个验证器只允许ComparisonType of: Equal, NotEqual, GreaterThan, GreaterThanEqual, LessThan, LessThanEqual 所以这实际上对你没有帮助。

      我认为你有两个选择:

      • 自我验证
      • 自定义验证器

      自我验证(由@Nix 展示)可能是最简单的,但需要在您有该要求的每个场景中重新实现(至少要让挂钩调用通用方法)。

      创建custom validator 将生成可以添加到配置中或直接归因于实体的代码,并且可以轻松重用。

      自定义验证器肯定会做更多工作,但如果您需要重用(例如,它可以跨应用程序重用)或者更喜欢这种设计,那么它可能是值得的。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-08-09
        • 2020-08-25
        • 1970-01-01
        • 1970-01-01
        • 2021-11-23
        • 2014-12-08
        • 1970-01-01
        • 2011-10-31
        相关资源
        最近更新 更多