我在C#中使用数据注释来验证POCO类。我希望能够在不同的情况下指定不同的验证方案。例如。对可信数据源的最低限度验证,但对通过向公众开放的网站收集的数据进行更高级别的验证。
我用谷歌搜索,我不确定是否:A)我没有使用正确的条款,或者B)这是完全错误的方法,这就是为什么我没有找到任何东西看起来这可能是一个普遍的需求。
说明我想做的事情:
public class TestClass {
[Required]
[EmailAddress]
[WhitelistCharactersOnly(ValidationScheme = ValidationSchemes.Untrusted)]
public string EmailAddress { get; set; }
}
我知道我可以使用自定义属性做一些事情,但我想尽可能避免重新发明轮子。
为了不引起太多争论,我的问题是:有没有办法实现我想做的事情,这是目前C#框架的一部分?
答案 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; }
}