2015-09-27 42 views
0

初學者在這裏。我想根據用戶輸入在C#中調用一個方法:例如;嘗試使用方法名稱中的用戶類型調用使用委託的方法

Console.WriteLine("Enter input:"); 
    string cmd = Console.ReadLine(); 

用戶鍵入:Method1或Method2,然後調用該方法。

我不會用什麼條件語句或案例切換;我正在嘗試與代表一起做這件事。

這是我開始:

public delegate void RunComm(string arg1, string arg2); 

Console.WriteLine("Enter input:"); 
string cmd = Console.ReadLine(); 

RunComm runthis = RunComm(cmd); 

public static void Method1(){ 

//Run Code 
} 

public static void Method2(){ 

//Run Code 
} 

我試圖做上述,我需要它的工作方式類似如上,但網上讀書和看教程後,我發現了以上不起作用。

有誰知道爲什麼?如果代表們不是這裏的答案,有人知道是什麼嗎?你可以分享的任何示例代碼?

+3

使用'詞典<字符串,動作>'或反射。 –

+0

您不能從字符串創建委託。 '新的RunComm'接受一個委託或一個方法。 –

回答

1

這是用於反射API的典型用例(可在System.Reflection namespace中找到)。

  1. 取含。
  2. 找到符合條件的方法的MethodInfo(在這種情況下,只有名稱)。確保您指定了正確的binding flags(並將它們與|運算符結合使用)。
  3. Invoke該方法。如果它是一種靜態方法,則可以調用null參考。

實施例:

typeof(Container) 
    .GetMethod(cmd, BindingFlags.Static | BindingFlags.Public) 
    .Invoke(null, new object[0]); 
相關問題