为什么实现IValidatableObject的类在另一个类库中使用时需要引用System.ComponentModel.DataAnnotations?

时间:2015-06-17 08:21:55

标签: c# asp.net-mvc

我有一个参考System.ComponentModel.DataAnnotations的实体的类库。 我有单独的数据库访问类库,但没有引用System.ComponentModel.DataAnnotations

我有一个名为“Customer的课程,使用的RequiredAttributeSystem.ComponentModel.DataAnnotations的一部分。数据访问库正在编译而没有错误。

我修改了Customer类并实现了IValidatableObjectIValidatableObject也是System.ComponentModel.DataAnnotations的一部分。 编译数据访问库时,需要引用System.ComponentModel.DataAnnotations。为什么DataAnnotations不需要引用RequiredAttribute

1 个答案:

答案 0 :(得分:0)

大多数自定义属性(包括RequiredAttribute)对编译没有任何影响。而对象(它自己的类型,基类和任何接口)可能的类型会影响方法过载选择等。

因此,在编译使用Customer类的程序集时,编译器需要实际知道所有这些类型。