Рассмотрим:
someControl.Click += delegate { Foo(); };
Аргументы события не имеют значения, они мне не нужны, и они меня не интересуют.Я просто хочу, чтобы Foo () был вызван.Нет очевидного способа сделать то же самое с помощью отражения.
Я бы хотел перевести вышесказанное во что-то вроде
void Foo() { /* launch missiles etc */ }
void Bar(object obj, EventInfo info)
{
Action callFoo = Foo;
info.AddEventHandler(obj, callFoo);
}
Также я не хочуПредположение, что тип объекта, передаваемый в Bar, строго соответствует правилам использования сигнатуры EventHander (TArgs) для событий.Проще говоря, я ищу способ подписать Action для любого типа обработчика;не так просто, способ преобразовать делегат Action в делегат ожидаемого типа обработчика.