如何获取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)
归档时间: |
|
查看次数: |
1631 次 |
最近记录: |