Проблема рефлексии, обобщений, обработчиков событий и делегатов - PullRequest
2 голосов
/ 26 сентября 2011

Я борюсь с рефлексией, обобщениями, обработчиками событий и делегатами. У меня есть тип, который является производным от AsyncCompletedEventArgs. Я хотел бы создать общий экземпляр EventHandler с этим типом, а также делегат. После этого я хочу добавить этот обработчик события.

Может кто-нибудь помочь мне в создании обработчика событий и делегата с помощью рефлексии? Вся помощь приветствуется.

// The type is derived from AsyncCompletedEventArgs
Type[] typeArgs = { soapServiceInfo.GetEntitiesCompletedEventArgsType };
var eventHandlerType = typeof(EventHandler<>);
var constructed = eventHandlerType.MakeGenericType(typeArgs);

// getEntitiesCompleted = (sender, arguments) => { }

// soapServiceInfo.GetEntitiesCompletedEventInfo.AddEventHandler(client, getEntitiesCompleted);

Ответы [ 2 ]

1 голос
/ 26 сентября 2011

Вы можете создавать лямбда-выражения только для типов, известных во время компиляции.

Вы пытаетесь создать лямбда-выражение во время выполнения; для этого вам нужно скомпилировать дерево выражений.

0 голосов
/ 26 сентября 2011

Посмотрите на Delegate.CreateDelegate ()

...