如何获取Type当前正在执行的程序集中未定义的类型的类实例mscorlib.dll?
一)也就是说,我定义一个类类型someType组装CSharpSnapIn.dll,位于E:\CSharpSnapIn.dll,但由于某些原因,当我尝试指定此程序集的绝对路径,我得到一个异常:
Type t = Type.GetType("someType, E:\\CSharpSnapIn.dll"); // exeception
Run Code Online (Sandbox Code Playgroud)
b)我也尝试将目前正在运行的应用程序CSharpSnapIn.dll放入\bin\debug目录中,但我仍然遇到异常:
Type t = Type.GetType("someType, CSharpSnapIn.dll"); // exeception
Run Code Online (Sandbox Code Playgroud)
感谢名单
编辑:
1)我已经声明了另一个类类型someType2(内部CsharpSnapIn.dll),这次它起作用了:
Type.GetType("someType2, CSharpSnapIn");
Run Code Online (Sandbox Code Playgroud)
someType和之间的区别someType2是someType实现在外部程序集中声明的接口asmIn,但这不应该导致异常,因为CsharpSnapIn.dll它有引用asmIn?!
2)
请注意,只要程序集解析程序可以找到它,就不需要先加载程序集
换句话说,Type.GetType()首先调用加载程序集然后创建一个Type实例?
3)
必须通过探测找到程序集,因此根据您的第二个示例,它必须位于bin目录中.如果它是具有强名称的程序集,则必须提供所有详细信息.
所以你说我们不能指定使用的绝对路径(到程序集)Type.GetType(),而是汇编需要驻留在bin目录中?
您需要先加载程序集:
Type t = Assembly
.LoadFrom(@"e:\CSharpSnapIn.dll")
.GetType("SomeNs.SomeType", true);
Run Code Online (Sandbox Code Playgroud)