使用简单的类名从Assembly加载Type

时间:2014-08-07 06:09:49

标签: c# reflection

我尝试通过反射加载一个类型

我成功找到了包含类型的程序集:

 var assembly = AppDomain.CurrentDomain.GetAssemblies().FirstOrDefault(t => t.GetTypes().Any(g => g.Name == "MyClass"));

但是当我尝试从程序集中加载类型时:

Type t = assembly.GetType("MyClass");

然后t为空, 我不想使用完整的限定名称加载类型,只需要使用类名。

1 个答案:

答案 0 :(得分:7)

如果您不想使用完全符合条件的名称,则需要通过LINQ进行搜索并手动处理案例,其中找到了多个类:

var types = assembly.GetTypes().Where(type => type.Name == "MyClass");
var firstType = types.FirstOrDefault();

记住/教训:程序集中可能有多个具有相同名称的类(具有不同名称空间的类)。