CustomStringLengthValidator Required - (patterns &实践——企业库)
本文关键字:实践 企业库 patterns Required CustomStringLengthValidator | 更新日期: 2023-09-27 18:09:29
我使用的是Microsoft Enterprise Library 5.0 Validation Application Block
我想覆盖StringLengthValidator
,这将只有一个小的变化。
当前的StringLengthValidator
是好的,但问题是这个验证器正在做两个工作。、NotNull
检查和字符串长度检查。如果字符串是null
,那么即使我忽略下界检查,验证器也会触发消息。
我想要的是,如果我提供一个null
值,验证器不应该在我忽略下界检查时触发,只应该考虑上界。
Thanks in advance
您可以使用企业库附带的组合验证器。您可以使用非空验证器和字符串长度验证器来执行验证。
下面是一个快速示例:
[ConfigurationElementType (typeof (CustomValidatorData)))公共密封类CustomValidatorClass: Validator{
public CustomValidatorClass(string template, string tag)
: base(template, tag)
{
}
protected override string DefaultMessageTemplate
{
get { return "blah blah"; }
}
public override void DoValidate(object objectToValidate, object currentTarget, string key, ValidationResults validationResults)
{
//Do something here
}
}
配置文件:
<validation>
<type name="ConsoleApplication1.PropertyClass" assemblyName="ConsoleApplication1, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null">
<ruleset name="Validation Ruleset">
<properties>
<property name="MyProperty">
<validator type="ConsoleApplication1.MyClass, ConsoleApplication1, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null"
messageTemplate="Blah blah" name="MyClass" />
</property>
</properties>
</ruleset>
</type>
</validation>
您可以对任何您想要验证的特定类型使用泛型类,或者在Enterprise Library API中已经扩展了Validator类的任何类。