2013-09-27 141 views
1

我正在尝试学习EnterpriseLibraryValidatoin。 当我配置TypeValidation通过配置文件验证一个类它不会拿起。 但是当我添加数据注释它验证正确 我不知道如果我要离开的东西了企业库6验证配置文件

任何帮助,请

验证配置文件

<validation> 
<type name="ValidationBlockExample.Person" defaultRuleset="ValidimiFushave" 
    assemblyName="ValidationBlockExample, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null"> 
    <ruleset name="ValidimiFushave"> 
     <fields> 
      <field name="LastName"> 
       <validator type="Microsoft.Practices.EnterpriseLibrary.Validation.Validators.NotNullValidator, Microsoft.Practices.EnterpriseLibrary.Validation, Version=6.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" 
        messageTemplate="Last Name Required!" name="Not Null Validator" /> 
      </field> 
     </fields> 
    </ruleset> 
</type> 

代码验证

 ValidationFactory.SetDefaultConfigurationValidatorFactory(new SystemConfigurationSource(false)); 

     Validator<Person> pValidator = ValidationFactory.CreateValidator<Person>(); 

     Person prsn = new Person(); 
     prsn.FirstName = "Name"; 
     ////prsn.LastName = "Haz"; 
     prsn.Age = 31; 

     ValidationResults valResults = pValidator.Validate(prsn); 


     if (!valResults.IsValid) 
     { 
      foreach (var valResult in valResults) 
      { 
       Console.WriteLine(valResult.Message); 

      } 

     } 
     else 
      Console.WriteLine("Preson Validated !!!"); 

     Console.ReadLine(); 

类来验证

public class Person 
{ 
    public string FirstName { get; set; } 
    //[Required] 
    public string LastName { get; set; } 
    public int Age { get; set; } 

} 

回答

2

Microsoft Enterprise Library 6 – Final Release, Release Notes

验证应用程序块

的ValidationFactory类不再自动生成配置文件中的其配置。您现在必须调用SetDefaultConfigurationValidatorFactory方法从配置文件加载配置。这是一个突破性的变化。您验证之前

ValidationFactory.SetDefaultConfigurationValidatorFactory(
new SystemConfigurationSource()); 

所以,一直向我建议,做到这一点。