【发布时间】:2011-06-29 21:05:51
【问题描述】:
当我将项目的目标框架设置为 Framework 4.0 并运行以下代码时:
Assembly pAsm = Assembly.LoadFrom(aMagPath);
foreach (Module m in pAsm.GetModules())
{
Type t = m.GetType("typeName"));
}
typeName 是来自第 3 方 dll 的用户定义类型。
t 为空。
如果我将目标类型更改为 Framework 3.5 t 不为空。
我不会改变其他任何东西。我只是更改目标框架并重新运行应用程序。
谁能解释为什么会这样? 有什么工具可以让我更多地研究这个吗?
更新: 我将代码更改为以下内容。
Assembly pAsm = Assembly.LoadFrom(aMagPath);
Type t = pAsm.GetType(String.Format("GM.FCAT.{0}.{0}+FBlock+{1}Function+{2}CaseStream+{2}RepeatableParameterStream", FBlockName, pName, aParam.Name), false);
我仍然有同样的问题。 t = null 在 4.0 版中,在 3.5 版中没有
当我将它加载到 .net 反射器时,我找不到类型。所以我猜它不是真的存在。
【问题讨论】:
-
什么是“m”,你要找的类型是什么?
-
什么是 m,括号是怎么回事?
-
@ jon - 我编辑了这个问题来回答你的问题。