2017-07-21 141 views
-1

如何調用帶參數的方法?c# - 帶參數的調用方法

我有這樣的:

List<String> methods = new List<String>(new List<String>{ "first", "second" }); 
int number = 4; 
String text = "Hi"; 
bool isTrue = false; 

而且要調用這樣的方法:

if (isTrue) 
    Invoke(methods[0], number); 
else if (!isTrue) 
    Invoke(methods[1], { number, text }); 

這可能嗎?

+0

我不明白這個問題,你在尋找某種反射? –

+0

https://msdn.microsoft.com/en-us/library/system.delegate.dynamicinvoke(v=vs.110).aspx – hoodaticus

+0

@PeterBons他可能只是想要一種新的方法嗎?我不確定'Invoke'是如何工作的,但我認爲它在這裏用錯了。我認爲一個標準的方法調用可以正常工作。對? –

回答

-1

我不完全確定你在問什麼,但我假設你正試圖通過它的名稱調用方法,並且該方法有參數。還假設:

  • 您有一個名爲obj一個對象,它是類型的YourObject
  • YourObject包含名爲firstsecond

,那麼你應該能夠使用公共的,非靜態方法如下:

if (isTrue) 
    typeof(YourObject).GetMethod(methods[0]).Invoke(obj, new[] { number }); 
else if (!isTrue) 
    typeof(YourObject).GetMethod(methods[1]).Invoke(obj, new[] { number, text }); 
+0

你可以寫我如何創建對象obj? – MineGame159

+0

假設你不能做var obj = new YourObject(),我會引用你這個答案:https://stackoverflow.com/questions/752/get-a-new-object-instance-from -a型 – bornfromanegg

+0

爲什麼downvote?如果答案有問題,請你解釋它是什麼,或者糾正答案? – bornfromanegg