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