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

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

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

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

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

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);
    }

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


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

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

15   голосов , оценка 3.6 из 5
Похожие ответы