忽略传递给Type.GetType()的程序集限定名称中的版本

时间:2009-07-21 13:55:56

标签: .net reflection types version

当传递到Type的程序集限定名称指定与实际加载的DLL版本不同的Type.GetType()时,是否可以通过GetType()获取Version ?如果是这样,GetType()的行为是什么?

我想从程序集中获取Type,无论程序集是什么版本。我有一个函数,它获取一个程序集限定的名称作为参数:

Type someType = Type.GetType(someName);

someName值对应于我想要获得的Type,但它可能与我的应用程序中加载的Version指定的{{1}}不同。

3 个答案:

答案 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

上的回复