2011-10-12 104 views
0

我試圖調用一個函數,它使用C#中的.NET反射兩個參數(一個布爾值和一個字符串)。然而,用下面的代碼我得到一個異常:(「試圖訪問的元素作爲一種類型的與陣列不相容」)如何使用C#中的反射調用具有不同類型參數的方法

object[] paramList = new object[] { true, "Foo" }; 

Type wsType = typeof(MyWS); 
MyWS inst = (MyWS)Activator.CreateInstance(wsType); 
MethodInfo method = wsType.GetMethod(function); // function = the name of the function to be called 
method.Invoke(inst, paramList); 

這將引發ArrayTypeMismatchException。

看來,paramList引起了異常,但我不知道爲什麼?

我試圖調用會是這樣的功能:

public bool EnableSchedule(bool enable, string password) 
{ 
    ... 
} 
+0

檢查'function'變量確實包含了接受這兩個參數的函數的名稱。除此之外,你的代碼應該可以工作。 – Groo

+2

數組* *可以包含不同類型的元素,尤其是對象數組。更好地記錄您的問題,顯示您嘗試調用的類型和方法以及異常的堆棧跟蹤。 –

+0

除非您提供「功能」的定義(或至少聲明),它的手來確定哪裏出了問題。錯誤的參數順序?你的函數可能接收(string,bool)而不是(bool,string)? –

回答

0

它似乎並不像有什麼不好,你在做什麼 - 除非問題出在「MyWS」。我假設這個班是公開的。 同時,嘗試加入一些綁定標誌以GetMethod(),像

wsType.GetMethod(function, BindingFlags.Static | BindingFlags.Public | BindingFlags.Instance); 
+0

你說得對,結果發現錯誤在我的其他班級! – William

相關問題