我有一種情況,即提供了字符串列表。列表中的第一個條目是方法的名稱。列表中剩餘的字符串是方法參數。我想使用任務來運行該方法(用於教育目的)。我有問題找出適當的過程,將允許我將方法名稱提供給任務指令。將任務與反射相結合
對於這個例子,我有兩個靜態方法可以作爲任務運行。參數[1] 表示我的選擇。
public class Program
{
private static ILog log = LogManager.GetLogger
(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
static void Main(string[] args)
{
string whichPrint = args[1];
Type type = typeof(Program);
MethodInfo meth = type.GetMethod(whichPrint, BindingFlags.Public |
BindingFlags.Static);
//this is the problem area....how do I feed the the method or delegate into
//the lambda expression ????
Delegate methDel = meth.CreateDelegate(type);
Task t = Task.Factory.StartNew(() => methDel("help!!"));
}
static void printme1(string s)
{
log.Debug("Printme1 Printing: " + s);
}
static void printme2(string s)
{
log.Debug("Printme2 Printing: " + s);
}
}
由於methDel被視爲變量,我無法編譯。我需要它,或者別的什麼, 被視爲一種方法。我不想使用case/switch語句,因爲我可能有很多可以分配給任務的方法。
我編輯了你的標題。請參閱:「[應該在其標題中包含」標籤「](http://meta.stackexchange.com/questions/19190/)」,其中的共識是「不,他們不應該」。 –