我使用反射來從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