我需要获取具有指定类名的类型,这些类在不同的程序集中具有相同的名称空间。
例如:
Assembly1
namespace ABCSolution.MyProject.MyCode
{
public class Class1
{
}
}
Assembly2
namespace ABCSolution.MyProject.MyCode
{
public class Class2
{
}
}
在我的情况下,我不知道指定类在运行时属于哪个程序集。所以我使用下面的代码
private Type GetType(string typeName)
{
var assemblies = AppDomain.CurrentDomain.GetAssemblies();
assemblies = assemblies.Where(x => x.FullName.StartsWith("ABCSolution.MyProject.MyCode.", StringComparison.InvariantCulture)).ToArray();
foreach (var assembly in assemblies)
{
Type type = Type.GetType(typeName + ", " + assembly);
if (type != null)
{
return type;
}
}
return null;
}
var myType = GetType(“ABCSolution.MyProject.MyCode.Class1”);
我的解决方案大部分时间都可以正常工作,但有时会返回null值。我不确定发生了什么,以及我是否使用了正确的方法。