ASP.NET MVC 找到类的类属性值使用反射

发布时间: 2016/11/13 8:23:03
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

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

[ANAttribute("Ampe21")]
public class ClassB : ClassA
{

}

我有不同的操作名称为不同的类定义。

想要的什么是获得的命名空间的 ClassB 或获取类型的 ClassB 通过搜索后的整个应用程序 Ampe21

如何能做到?

解决方法 1:

您可以搜索所有已加载的程序集,像这样︰

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 但不是建议这样做。

官方微信
官方QQ群
31647020