C# 无法将方法作为委托传递
我想通过这个方法C# 无法将方法作为委托传递,c#,delegates,C#,Delegates,我想通过这个方法 private void activityStreamDownloaded(TaskNotification tn) { //Logic } 代表ad=activityStreamDownloaded时;方法 public void AddNextTask(WebAPITask task, Delegate callback) { //Error: Callback is variable but is used like a method task.
private void activityStreamDownloaded(TaskNotification tn)
{
//Logic
}
代表ad=activityStreamDownloaded时;方法
public void AddNextTask(WebAPITask task, Delegate callback)
{
//Error: Callback is variable but is used like a method
task.OnExecuted += () => callback(task.TaskNotification);
}
像这样_taskList.AddNextTask new TaskObj,ad
为什么会发生这种情况?我如何解决这个问题?正如注释中指出的,委托是一个抽象类。相反,尝试这样的事情
// declare an action type (basically a delegate with void return type)
Action<TaskNotification> callback = activityStreamDownloaded;
// update method signature to take an Action<TaskNotification>
public void AddNextTask(WebAPITask task, Action<TaskNotification> callback)
// this code should work now
_taskList.AddNextTask (new TaskObj(), callback);
我相信委托有一个名为Invoke的方法。不能像调用实际函数一样调用它们。它们是对象。您需要更具体地说明什么是委托类型。委托没有签名,因此您不能像那样调用它。它只是一个抽象基类。看来你需要Action@SriramSakthivel我在哪里需要它?将AddNextTask方法签名更改为public void AddNextTaskWebAPITask任务,操作回调。我猜,不知道task.TaskNotification属性是什么,我只能猜这么多: