1
是否有可能有一個通用的方法,需要委託(?)的方法或只是一個代碼塊作爲參數傳入?假設我有AddJob()和AddJob2()。我希望這些傳入一個通用的方法,運行一些骨架代碼,但然後執行AddJob或AddJob2。通用方法將委託傳遞給方法?
謝謝!
編輯:
我在.net 2.0上。
是否有可能有一個通用的方法,需要委託(?)的方法或只是一個代碼塊作爲參數傳入?假設我有AddJob()和AddJob2()。我希望這些傳入一個通用的方法,運行一些骨架代碼,但然後執行AddJob或AddJob2。通用方法將委託傳遞給方法?
謝謝!
編輯:
我在.net 2.0上。
肯定的:
public void AddJob(string jobName) { ... }
public void AddJob2(string jobName) { ... }
public void RunAddJob(Action addJob)
{
...
addJob();
}
static void Main()
{
RunAddJob(() => AddJob("job1"));
RunAddJob(() => AddJob2("job2"));
}
編輯:非通用System.Action
在.NET中3.5是新的。對於.NET 2.0,您可以假設:
public delegate void Action();
大部分Enumerable類(對於LINQ)都是這樣工作的。
T MyFunc<T>(T t, Func<T, T> addjob)
{
return addjob(t);
}
MyFunc(5, i => i + 10);
如果您不知道傳遞給函數AddJob和AddJob2的參數是否可能不提供jobName? 謝謝 – adamwtiko 2010-08-02 14:21:45
@Adam如果我理解正確,我可以修改答案來演示 – 2010-08-02 14:28:49
...雖然示例中的RunAddJob方法不再需要是通用的,如果我這樣做。 – 2010-08-02 14:30:13