我有一个自定义属性的类,它有一个字符串参数。
[ANAttribute("Ampe21")]
public class ClassB : ClassA
{
}
我为不同的类定义了不同的动作名称。
我想获得ClassB
的命名空间,或者通过在Ampe21
之后搜索整个应用程序来获得ClassB
的类型。
我该怎么做呢?
您可以像这样搜索所有已加载的程序集:
var types = AppDomain.CurrentDomain.GetAssemblies()
.SelectMany
(x => x.GetTypes()
.Where(t => t.GetCustomAttribute<ANAttribute>() != null &&
t.GetCustomAttribute<ANAttribute>().YourProperty == "Ampe21")
);
foreach (var type in types)
{
Console.WriteLine(type.Namespace);
}
可以通过引入一个局部变量来避免两次调用GetCustomAttribute
。
如果尚未加载程序集,则将跳过该程序集。您可以使用Assembly.Load
加载它,但不推荐。