当传递到Type
的程序集限定名称指定与实际加载的DLL版本不同的Type.GetType()
时,是否可以通过GetType()
获取Version
?如果是这样,GetType()
的行为是什么?
我想从程序集中获取Type
,无论程序集是什么版本。我有一个函数,它获取一个程序集限定的名称作为参数:
Type someType = Type.GetType(someName);
someName
值对应于我想要获得的Type
,但它可能与我的应用程序中加载的Version
指定的{{1}}不同。
答案 0 :(得分:7)
我成功地使用了它:
Type type = Type.GetType(typeName, AssemblyResolver, null);
private static System.Reflection.Assembly AssemblyResolver(System.Reflection.AssemblyName assemblyName)
{
assemblyName.Version = null;
return System.Reflection.Assembly.Load(assemblyName);
}
答案 1 :(得分:1)
在测试中,我发现GetType()
将返回正确的类型,即使当前加载的程序集的版本与程序集限定名称的Version
字段中的值不匹配。
答案 2 :(得分:0)
您应该反思当前域中的程序集,以便执行此操作。
检查我在this thread
上的回复