2012-11-02 4 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 파일에 반드시 값을 확인하는 유효성 검사 규칙을 적용하는 것이 가능 실제로 bool일까요? 일하는 것이

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; 
    } 
관련 문제