0

最近、Enterprise Validation Library を発見し、それを使用して 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 ファイルの値が実際に 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; }
}

これは機能しますが、ブール値ではなく文字列を扱っています。

4

1 に答える 1

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;
    }
于 2012-11-02T14:22:24.110 に答える