【问题标题】:Enterprise Library 5 Validation Type Safe?Enterprise Library 5 验证类型安全吗?
【发布时间】:2012-11-02 00:36:04
【问题描述】:

我最近发现了企业验证库,并正在使用它来验证我的 app.config 文件。我主要有易于应用验证的字符串。我也有一些布尔值,例如:

    class Options
{
    public bool IsRed { get; set; }
    public bool IsBlue { get; set; }
}

然后在我的 app.config 中:

    <!--Options-->
<add key ="IsRed" value="true"/>
<add key ="IsBlue" value="Maybe"/>

是否可以应用验证规则来检查以确保 app.config 文件中的值实际上是布尔值?

我能想到的最好的是:

    class Options
{
    [TypeConversionValidator(typeof(bool), MessageTemplate = "IsRed value must be a true/false")]
    public string IsRed { get; set; }
    [TypeConversionValidator(typeof(bool), MessageTemplate = "IsBlue value must be a true/false")]
    public string IsBlue { get; set; }
}

这可行,但我处理的是字符串而不是布尔值。

【问题讨论】:

    标签: c# app-config enterprise-library enterprise-library-5


    【解决方案1】:

    我决定使用动态类型。我的代码现在看起来像这样:

    class Options
    {
        [TypeConversionValidator(typeof(bool), MessageTemplate = "IsRed value must be a true/false")]
        public dynamic IsRed { get; set; }
        [TypeConversionValidator(typeof(bool), MessageTemplate = "IsBlue value must be a true/false")]
        public dynamic IsBlue { get; set; }
    }
    
        private ValidationResults LoadOptions()
        {
            _options.IsRed = ConfigurationManager.AppSettings["IsRed"];
            _options.IsBlue = ConfigurationManager.AppSettings["IsBlue"];
    
            var valFactory = EnterpriseLibraryContainer.Current.GetInstance<ValidatorFactory>();
            var cusValidator = valFactory.CreateValidator<Options>();
            var optionValidator = cusValidator.Validate(_options);
    
            if (optionValidator.IsValid)
            {
                _options.IsBlue = Convert.ToBoolean(_options.IsBlue);
                _options.IsRed = Convert.ToBoolean(_options.IsRed);
            }
    
            return optionValidator;
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-11-11
      • 1970-01-01
      相关资源
      最近更新 更多