c# - 如何在 Windows 应用商店应用程序中获取一个类的所有派生类的自定义属性

标签 c# windows-store-apps

我有我的

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/

相关文章:

c# - UWP 应用程序 - AdControl 不显示任何具有测试模式值的内容

c# - 超时缓冲任务数据

c# - 如何仅在 SQLite 中更新 1 行

c# - WPF 复选框与多行内容左上角对齐

c# - ListView 列标题液体大小?

c# - 如果我使用 getFileAsync 而不是 Picker.pickSingleFileAsync,则无法从 FutureAccessList 检索文件

c# - Windows 商店应用程序中的 TypeLoadException

c# - 使用 ADFS 进行 Asp.net Core 身份验证。将按钮名称从 {wsfederation} 更改为我的首选名称

c# - Windows 应用商店应用程序 frame.navigate() 不工作

c# - HtmlAgilityPack - 删除集合中的所有节点