我最近发现了企业验证库,并使用它来验证我的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; }
}
哪种方法有效,但后来我处理字符串而不是布尔值。
答案 0 :(得分: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;
}