DataAnnotations是否可以在接口上运行?

时间:2017-02-18 00:29:19

标签: c# .net oop

我在界面中有一个验证属性,如

public interface MyInterface
{
    [RegularExpression(@"^[A-Za-z0-9\-_ ]+$", ErrorMessage = "No bad characters"]
    string Name { get; set; }
}

我希望它的实现能够添加更多验证,比如

public class MyImplementation : IIdentifiable
{
    [MaxLength(100), Error Message = "Length must be <= 100"]
    public string Name { get; set; }
}

然而,当我测试MyImplementation时,我注意到正在进行正则表达式验证。这是预期的吗?如果是这样,我怎样才能使接口上的属性传递给实现?或者我可以吗?

1 个答案:

答案 0 :(得分:0)

我不希望它起作用。如果您使用接口进行模型绑定,那么我可能希望接口属性能够被MVC反映出来并使用它们,而不是具体的类。在这种情况下,我怀疑你绑定到具体类,并且反射是从该类检索属性,而不是关心接口。

属性是应用于反射成员的元数据 - 因此它取决于MyImplementation或MyInterface是否被重新感染使用哪一个。