通用方法将委托传递给方法?

时间:2010-08-02 14:09:24

标签: c# generics

是否可以使用一个通用方法,该方法需要一个方法的委托(?),或者只需要一个代码块作为参数传入?

说我有AddJob()和AddJob2()。我想将这些传递给Generic方法,该方法运行一些骨架代码,然后执行AddJob或AddJob2。

谢谢!

编辑:
我在.net 2.0上。

2 个答案:

答案 0 :(得分:8)

不确定

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();

答案 1 :(得分:5)

大多数Enumerable类(对于LINQ)都是这样的。

T MyFunc<T>(T t, Func<T, T> addjob)
{
    return addjob(t);
}


MyFunc(5, i => i + 10);