是否可以将DataAnnotations与接口一起使用?
我想使用DataAnnotations来validation实现某些接口的类,因此我将validation属性添加到接口,如下所示:
public interface IUser { [Required] string Name { get; set; } [Display(Name = "Email Address")] [Required] string Email { get; set; } }
当我尝试使用Validator.TryValidateObject
时,它不起作用。
有没有办法做到这一点而不必编写自定义TryValidateObject
方法?
我很惊讶没有人提到MetadataTypeAttribute 。 但是,是的,这有效。
[MetadataType(typeof(ICustomerMetaData))] public partial class Customer { } public interface ICustomerMetaData { // Apply RequiredAttribute [Required(ErrorMessage = "Title is required.")] string Title { get; } }
至于直接使用接口(使用Customer: ICustomerMetaData
):
产品团队不希望实现此function,原因有两个:
•与DataAnnotations.Validator的一致性
•与ASP.Net MVC中的validation行为保持一致
•棘手的场景:一个类实现了两个具有相同属性但具有相互冲突属性的接口。 哪个属性优先?
如果使用基类而不是接口,则属性可以正常工作。