2012-11-02 24 views
0

我最近发现了企业验证库,并使用它来验证我的app.config文件。我大部分的字符串都很容易应用验证。我也有例如在一些布尔:企业库5验证类型安全吗?

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; } 
} 

这会工作,但后来我处理字符串,而不是布尔值。

回答

0

我决定使用动态类型。我现在的代码如下所示:

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; 
    }