在 .NET Standard 中检索 Type 的自定义属性

Retrieve custom attributes of Type in .NET Standard

我想使用 C# 的反射和自定义属性来简化向中央管理注册一系列类型 class(即它提供采用字符串键和 invoking/retrieving 正确的静态方法method/parameter 关联类型)。查看此处和其他地方的其他问题,似乎最好的方法是简单地遍历所有 public 类型的程序集——因为它打算成为一个库——并检查是否每个在将相关值添加到基础字典之前,类型具有适当的属性。反射和迭代肯定会很慢,但我可以接受它,因为它应该只发生一次。

不幸的是,我不知道如何从类型中获取属性。对于方法和程序集,我可以使用 System.Reflection.Extensions 中的 CustomAttributeExtensions.GetCustomAttribute<MyAttribute>(base),但这不会为 Type 提供重载; Assembly.GetCustomAttribute(Assembly, Type)this question. Other suggestions use methods on the Type itself that, from the documentation 中使用的 .IsDefined(...) 方法相同,似乎是从 mscorelib.dll 加载的,但即使添加后它似乎也没有出现在 Intellisense 中参考文献,我不确定 .dll 如何与 .NET Standard 交互(例如,它是否完全降低了在任意平台上 运行 的能力?)

我是不是遗漏了一些明显的东西,或者 AttributeType 中退缩真的这么难吗?

尝试typeof(YourType).GetTypeInfo().GetCustomAttributes();