gpt4 book ai didi

c# - 无法为当前正在执行的程序集中未定义的类型获取 Type 类的实例

转载 作者:行者123 更新时间:2023-11-30 19:33:39 25 4
gpt4 key购买 nike

如何为当前正在执行的程序集中或 mscorlib.dll 中未定义的类型获取 Type 类的实例?

a) 也就是说,我在程序集 CSharpSnapIn.dll 中定义了一个类类型 someType,位于 E:\CSharpSnapIn.dll ,但出于某种原因,当我尝试指定该程序集的绝对路径时,出现异常:

Type t = Type.GetType("someType, E:\\CSharpSnapIn.dll"); // exeception

b) 我也尝试过将 CSharpSnapIn.dll 放入当前正在运行的应用程序的 \bin\debug 目录中,但我仍然遇到异常:

Type t = Type.GetType("someType, CSharpSnapIn.dll"); // exeception

谢谢

编辑:

1) 我已经声明了另一个类类型 someType2(在 CsharpSnapIn.dll 中),这次它起作用了:

Type.GetType("someType2, CSharpSnapIn");

someTypesomeType2 的区别在于someType 实现了一个在外部程序集asmIn 中声明的接口(interface),但是这个不应导致异常,因为 CsharpSnapIn.dll 确实有对 asmIn 的引用?!

2)

Note that the assembly doesn't need to be loaded first, so long as the assembly resolver can find it

也就是说,调用Type.GetType()先加载一个程序集,然后创建一个Type实例?

3)

The assembly has to be found by probing, so it would have to be in the bin directory as per your second example. If it's an assembly with a strong name, you have to give all the details.

所以你是说我们不能使用 Type.GetType() 指定绝对路径(到程序集),而是程序集需要驻留在 bin 目录?

最佳答案

您需要先加载程序集:

Type t = Assembly
.LoadFrom(@"e:\CSharpSnapIn.dll")
.GetType("SomeNs.SomeType", true);

关于c# - 无法为当前正在执行的程序集中未定义的类型获取 Type 类的实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3276741/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com