簡體   English   中英

.Net Framework 3.5反射問題

[英].Net Framework 3.5 reflection issues

我正在使用反射從源代碼下面的dll調用方法

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);

在當前項目和dll中,具有相同空間名稱的類ConfigurationObjectsImport均重復,但是methodInf.Invoke(obj,args); 引發異常“無法將Phenix_Import_Commun.Domaine.ConfigurationObjectsImport類型轉換為Phenix_Import_Commun.Domaine.ConfigurationObjectsImport類型”。

我假設正在執行的程序集的configurationObjectsImport類型為Phenix_Import_Commun.Domaine.ConfigurationObjectsImport ,但是CustomImport.Import.ExecImport期望的類型與AssemblyName.dll具有相同的名稱和名稱空間。 這是兩種不同的類型,碰巧具有相同的名稱(這是非常不希望的)。

如果您確實在兩個具有相同名稱的不同程序集中具有兩種不同類型,並且想要執行此操作和/或沒有更改此功能的能力,則需要使用來自Phenix_Import_Commun.Domaine.ConfigurationObjectsImport對象的反射來創建Phenix_Import_Commun.Domaine.ConfigurationObjectsImport對象AssemblyName.dll並將其傳入。

另一方面,如果您希望它們具有相同的類型,則需要在兩個程序集都通用的程序集中定義該類型(定義該類型的第三個程序集,如果AssemblyName.dll ,則執行該程序AssemblyName.dll引用),並且只有該名稱的一種類型定義。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM