CustomStringLengthValidator必需 - (模式和实践 - 企业库)

时间:2013-04-16 07:45:02

标签: c# .net enterprise-library enterprise-library-5

我正在使用Microsoft Enterprise Library 5.0验证应用程序块。

我希望覆盖StringLengthValidator只会有一个小的改动。

当前StringLengthValidator很好,但问题是这个验证器正在做两个工作。NotNull检查和字符串长度检查。如果字符串是null,则即使忽略下限检查,验证器也会触发消息。

我想要的是,如果我提供null值,验证器在忽略下限检查时不应该触发,只有它应该考虑upperBound。

提前致谢

1 个答案:

答案 0 :(得分:0)

您可以使用Enterprise Library附带的Or Composite Validator。您可以使用Not Null Validator和String Length Validator来执行验证。

以下是一个快速示例:

[ConfigurationElementType(typeof运算(CustomValidatorData))]     public sealed class 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类的任何类。