具有属性

时间:2016-02-01 10:04:27

标签: c# validation

我在C#中使用数据注释来验证POCO类。我希望能够在不同的情况下指定不同的验证方案。例如。对可信数据源的最低限度验证,但对通过向公众开放的网站收集的数据进行更高级别的验证。

我用谷歌搜索,我不确定是否:A)我没有使用正确的条款,或者B)这是完全错误的方法,这就是为什么我没有找到任何东西看起来这可能是一个普遍的需求。

说明我想做的事情:

public class TestClass { 

    [Required]
    [EmailAddress]
    [WhitelistCharactersOnly(ValidationScheme = ValidationSchemes.Untrusted)]
    public string EmailAddress { get; set; }

}

我知道我可以使用自定义属性做一些事情,但我想尽可能避免重新发明轮子。

为了不引起太多争论,我的问题是:有没有办法实现我想做的事情,这是目前C#框架的一部分?

1 个答案:

答案 0 :(得分:0)

如果您使用MVC框架进行验证,则可以利用MetadataTypeAttribute

[MetadataType(typeof(ICustomerValidation1))]
public class CustomerValidation1 : CustomerBase { }

public class CustomerBase
{
  public string Title { get; set; }
}


public interface ICustomerValidation1
{
  // Apply RequiredAttribute
  [Required(ErrorMessage = "Title is required.")]
  string Title { get; }
}