【问题标题】:How get reflection info of a class loaded in the main assembly如何获取加载到主程序集中的类的反射信息
【发布时间】:2015-06-10 12:02:06
【问题描述】:

我正在使用Type.GetType 函数来获取有关类的反射信息。如果我从我的应用程序中使用该函数一切正常,但现在我需要从以前从我的应用程序加载的外部 dll 调用该函数。

如果从主应用程序调用,此代码可以正常工作

Type myType1 = Type.GetType("MyNameSpace.MyType");

但如果将该代码放入 dll 中(该 dll 是从我的应用程序加载的),则会失败(myType1 不返回任何内容)

问题是我如何使用Type.GetType 来加载存在于加载 dll 的 Exe 中的类型?

编辑:

我认为哪个问题可以重新表述为 如何从加载我的 dll 的程序集中加载类型?

MyEXE
  Myclass   
  MyDll (loaded by MyExe)
    Type.GetType //only get types of the MyDll assembly, how i can access the Myclass type which is defined on MyExe?

【问题讨论】:

标签: c# .net reflection


【解决方案1】:

在项目范围之外使用 DLL 时需要使用完全限定名称

Type myType1 = Type.GetType("MyType, MyNameSpace", true, true);

试试看

【讨论】:

  • 请检查更新的 anwser ,我真的在使用限定名称,问题是当我使用 Type.GetType 函数时,只获取当前程序集 (MyDll) 的类型,我需要获取从加载程序集的 exe 中键入。
  • 您的示例表明您没有使用完全限定的命名空间。再次查看示例以确保您使用 , 将您的类名与命名空间分开
  • 非常感谢我错过了,
  • 我应该使用代码包装让它更明显。很高兴你知道了!
【解决方案2】:

您还可以通过 Assembly.Load 方法加载程序集,然后枚举所有 (GetTypes()) 或从程序集中获取特定类型。看看Assembly类吧

【讨论】:

    猜你喜欢
    • 2013-03-09
    • 1970-01-01
    • 2017-06-19
    • 2021-03-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多