获取标记某个属性的所有属性

  • 本文关键字:属性 获取 c# reflection
  • 更新时间 :
  • 英文 :


这里有class和properties。有些属性可以标记为属性(这是我的LocalizedDisplayName继承自DisplayNameAttribute)。这是获取类的所有属性的方法:

private void FillAttribute()
{
    Type type = typeof (NormDoc);
    PropertyInfo[] propertyInfos = type.GetProperties();
    foreach (var propertyInfo in propertyInfos)
    {
        ...
    }
}

我想在标记为LocalizedDisplayName的列表框中添加类的属性,并在列表框中显示属性的值。我该怎么做呢?

编辑
这是LocalizedDisplayNameAttribute:

public class LocalizedDisplayNameAttribute : DisplayNameAttribute
    {
        public LocalizedDisplayNameAttribute(string resourceId)
            : base(GetMessageFromResource(resourceId))
        { }
        private static string GetMessageFromResource(string resourceId)
        {
            var test =Thread.CurrentThread.CurrentCulture;
            ResourceManager manager = new ResourceManager("EArchive.Data.Resources.DataResource", Assembly.GetExecutingAssembly());
            return manager.GetString(resourceId);
        }
    }  

我想从资源文件中获取字符串。谢谢。

这可能是最容易使用IsDefined:

var properties = type.GetProperties()
    .Where(prop => prop.IsDefined(typeof(LocalizedDisplayNameAttribute), false));

要获取值本身,您可以使用:

var attributes = (LocalizedDisplayNameAttribute[]) 
      prop.GetCustomAttributes(typeof(LocalizedDisplayNameAttribute), false);

相关内容

  • 没有找到相关文章

最新更新