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

CustomStringLengthValidator Required - (patterns &实践——企业库)

您可以使用企业库附带的组合验证器。您可以使用非空验证器和字符串长度验证器来执行验证。

下面是一个快速示例:

[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类的任何类。