Передача делегата в обобщенную функцию - 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); }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д