2015-03-23 2 views
0

Я хотел бы передать этот методНе удается передать метод в качестве делегата

private void activityStreamDownloaded(TaskNotification tn) 
{ 
    //Logic 
} 

с Delegate 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);

Почему это происходит и как можно Я решаю это?

+0

Делегат имеет метод под названием Invoke, которому я верю. Вы не можете просто ссылаться на них, как на фактические функции. Это объекты. –

+5

Вы должны быть более конкретным относительно типа делегата. 'Делегат' не имеет подписи, и поэтому вы не можете ссылаться на него именно так. Это всего лишь абстрактный базовый класс. Похоже, вам нужно 'Action ' –

+0

@SriramSakthivel, где мне это нужно? – Saphire

ответ

0

Как указано в комментариях Delegate - это абстрактный класс. Вместо этого попробуйте что-то вроде этого;

// 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); 
Смежные вопросы