我使用反射来从DLL调用一个方法,源代码.NET Framework 3.5的反射问题
ConfigurationObjectsImport configurationObjectsImport;
Assembly asm;
asm = Assembly.LoadFrom("AssemblyName.dll");
object obj;
Type TYP;
TYP = asm.GetType("CustomImport.Import");
obj = Activator.CreateInstance(TYP);
MethodInfo methodInf = obj.GetType().GetMethod("ExecImport");
object[] args = new object[1];
args[0] = configurationObjectsImport;
methodInf.Invoke(obj, args);
类ConfigurationObjectsImport在两个当前项目和DLL重复使用相同的空间名称下方,但methodInf.Invoke(obj,args);抛出异常“不能将类型Phenix_Import_Commun.Domaine.ConfigurationObjectsImport转换为类型Phenix_Import_Commun.Domaine.ConfigurationObjectsImport”。
如果类型在不同的程序集中,即使它们具有相同的名称,它们也是*不是同一类型。 – Amy
为什么你会在dll中和你的项目中有一个完全相同的命名空间的类?这没有任何意义。 – bc004346
@ bc004346如果您认为框架对待它们,它确实有意义。它是一种常见的误解,即如果类型看起来完全相同,它们是相同的。 – Amy