ASP.使用反射按类属性值查找类



我有一个自定义属性的类,它有一个字符串参数。

[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加载它,但不推荐。

相关内容

  • 没有找到相关文章

最新更新