Передача делегата в обобщенную функцию - C#

Узнай цену своей работы

Формулировка задачи:

Доброго времени суток, Господа. Потихоньку изучаю делегаты. Не могу понять, как реализовать вот такую вещь:
Листинг программы
  1. class A
  2. {
  3. public void Func<T>( MulticastDelegate handler, int x, int y )
  4. {
  5. (T)handler( x, y );
  6. }
  7. }
Тоесть есть класс A, там есть открытая шаблонная функция, которая принимает 3 параметра - делегат, и 2 параметра вызова делегата. Я хочу при вызове этой функции, передавать делегат( как я понял, все делегаты являются наследниками MulticastDelegate ), который выглядеть будет примерно так: void delegate MyDelegate( int x, int y ), что соответствует вызову внутри функции Func. Параметр обобщения буду передавать тип MyDelegate, чтобы правильно привести его внутри. Вообщем вызов должен быть таким:
Листинг программы
  1. void delegate MyDelegate( int x, int y );
  2. MyDelegate d;
  3. ... // тут подписываюсь
  4. Func<MyDelegate>( d, 4, 3 );
У меня выдает ошибки на все что только можно... помогите разобраться...я пришел к Вам из простор C++, там что-то вроде такого реализовывается на ура...а здесь...

Решение задачи: «Передача делегата в обобщенную функцию»

textual
Листинг программы
  1.     public void SubscribeEvent<T>(T handler)
  2.     {
  3.         var del = (Delegate)(object)handler;
  4.         Type key = typeof(T);
  5.         if (events.ContainsKey(key))
  6.             events[key] = Delegate.Combine(events[key], del);
  7.         else
  8.             events.Add(key, del);
  9.     }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

15   голосов , оценка 3.6 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы