如何从属性中获取数据注释属性

时间:2010-11-02 09:44:48

标签: c# entity-framework reflection data-annotations

我正在尝试构建一个网格,使用类信息及其属性以及支持的dataannotion属性。

类和注释可以在不同的类中定义,例如(Product和ProductMetaData类),并与metadatatype属性绑定(也可以在单个类中定义)。

这会使DataAnnotaion属性在基类本身中可用还是有其他方法来获取dataannotation属性?

您可以链接的任何示例代码也非常有用。

感谢。

1 个答案:

答案 0 :(得分:2)

要从类中读取模型元数据,通常应该创建DataAnnotationsModelMetadataProvider的实例(在System.ComponentModel中)。

此类生成一个ModelMetadata对象,该对象是类上元数据的摘要。

这种方法的一个主要优点是它自动尊重伙伴元数据类的元数据。

通过使用ModelMetadata,您还可以在特定元数据属性和其含义的解释之间引入一个很好的抽象。例如,如果您创建了一些自己的元数据属性,或者您想要强制执行其他元数据源(例如,将所有属性结束为Date,就好像它们已经应用DataType.Date一样,即使它们没有),那么您可以创建自己的元数据DataAnnotationsModelMetadataProvider,添加这些额外的规则,并且所有其他代码都保持不变,因为它从ModelMetadata类读取 - 而不是直接来自特定属性的知识。