我有我的
class BaseClass
{
}
和两个像这样的子类:
[PostTransformer("test", Precedence=5)]
class SubClassA : BaseClass
{
}
和一个属性
[System.AttributeUsage(System.AttributeTargets.Class)]
public class PostTransformerAttribute : Attribute
{
public int Precedence;
public string Title;
public PostTransformerAttribute(string Title)
{
this.Title = Title;
Precedence = int.MaxValue;
}
}
如何获取 BaseClass 的所有子类的所有 PostTransformerAttribute
类型的属性?
我试过:
var test = typeof(BaseClass).GetTypeInfo().GetCustomAttributes<PostTransformerAttribute>();
但它返回一个空数组。
最佳答案
是的,它是 null,您当前正在尝试仅获取基类的属性。
您想枚举从您的基类继承的所有类型的列表。
即像这样的东西:
var baseType = typeof(BaseClass);
var types = Assembly
.GetExecutingAssembly()
.GetTypes()
.Where(z => baseType.IsAssignableFrom(t) && t.GetCustomAttributes(typeof(PostTransformerAttribute), true).Any());
(未实际测试,但这是想法)
关于c# - 如何在 Windows 应用商店应用程序中获取一个类的所有派生类的自定义属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16594256/