Передача делегата в обобщенную функцию - C#
Формулировка задачи:
Доброго времени суток, Господа. Потихоньку изучаю делегаты.
Не могу понять, как реализовать вот такую вещь:
Тоесть есть класс A, там есть открытая шаблонная функция, которая принимает 3 параметра - делегат, и 2 параметра вызова делегата.
Я хочу при вызове этой функции, передавать делегат( как я понял, все делегаты являются наследниками MulticastDelegate ), который выглядеть будет примерно так: У меня выдает ошибки на все что только можно... помогите разобраться...я пришел к Вам из простор C++, там что-то вроде такого реализовывается на ура...а здесь...
class A
{
public void Func<T>( MulticastDelegate handler, int x, int y )
{
(T)handler( x, y );
}
}void delegate MyDelegate( int x, int y ), что соответствует вызову внутри функции Func. Параметр обобщения буду передавать тип MyDelegate, чтобы правильно привести его внутри.
Вообщем вызов должен быть таким:
void delegate MyDelegate( int x, int y ); MyDelegate d; ... // тут подписываюсь Func<MyDelegate>( d, 4, 3 );
Решение задачи: «Передача делегата в обобщенную функцию»
textual
Листинг программы
public void SubscribeEvent<T>(T handler)
{
var del = (Delegate)(object)handler;
Type key = typeof(T);
if (events.ContainsKey(key))
events[key] = Delegate.Combine(events[key], del);
else
events.Add(key, del);
}