我遇到以下代码的问题:
//This class can't be changed for is part of an EF data context.
public partial class person
{
public string Name { get; set; }
}
//I have this partial just to access the person DisplayNameAttribute
[MetadataType(typeof(person_metaData))]
public partial class person
{
}
//And this is the MetaData where i am placing the
public class person_metaData
{
[DisplayName("Name")]
public string Name { get; set; }
}
如何在另一个类中获取DisplayNameAttribute?提前谢谢!
答案 0 :(得分:0)
假设您的班级AssociatedMetadataTypeTypeDescriptionProvider
已正确注册,System.ComponentModel.TypeDescriptor
班级将尊重元数据类中的属性。
在程序开头附近添加:
TypeDescriptor.AddProvider(
new AssociatedMetadataTypeTypeDescriptionProvider(typeof(person)),
typeof(person));
然后访问属性:
PropertyDescriptorCollection properties = TypeDescriptor.GetProperties(typeof(person));
PropertyDescriptor prop = properties["Name"];
string displayName = prop.DisplayName;
或者,您可以直接使用AssociatedMetadataTypeTypeDescriptionProvider
课程:
var provider = new AssociatedMetadataTypeTypeDescriptionProvider(typeof(person));
ICustomTypeDescriptor typeDescriptor = provider.GetTypeDescriptor(typeof(person), null);
PropertyDescriptorCollection properties = typeDescriptor.GetProperties();
PropertyDescriptor prop = properties["Name"];
string displayName = prop.DisplayName;
NB:您的DisplayName
属性目前尚未更改显示名称,因此您不会发现任何差异。更改传递给属性构造函数的值,以查看类型描述符是否正常工作。