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