查找. net中没有BrowsableAttribute显式设置为Yes的所有属性



是否有一种方法可以找到给定类型的所有属性,而无需在。net中显式设置BrowsableAttribute为Yes ?

我尝试了以下代码,但没有成功(所有默认可浏览的属性也被返回):

PropertyDescriptorCollection browsableProperties = TypeDescriptor.GetProperties(type, new Attribute[] { BrowsableAttribute.Yes });

这里稍微考虑一下linq会有帮助。

var result =  type
    .GetProperties()
    .Where(x =>
            x.GetCustomAttribute<BrowsableAttribute>() == null ||
            !x.GetCustomAttribute<BrowsableAttribute>().Browsable)
    .ToList();

可以引入一个局部变量来避免两次调用GetCustomAttribute方法。

如果你的。net框架版本小于4.5,你可以编写自己的GetCustomAttribute扩展方法,像这样

public static T GetCustomAttribute<T>(this MemberInfo element) where T: Attribute
{
    return (T) element.GetCustomAttribute(typeof(T));
}

相关内容

  • 没有找到相关文章

最新更新