ventajas usos usar tipos tipo runtimebinderexception runtimebinder puede programacion microsoft los invocar funcionan funcion eventos delegate delegados delegado csharp concepto como .net action methodinfo

.net - usos - tipos de delegates



¿Cómo puedo crear un delegado de Acción desde MethodInfo? (2)

Deseo obtener un delegado de acción de un objeto MethodInfo. es posible?

Gracias.


Esto parece funcionar además del consejo de John:

public static class GenericDelegateFactory { public static object CreateDelegateByParameter(Type parameterType, object target, MethodInfo method) { var createDelegate = typeof(GenericDelegateFactory).GetMethod("CreateDelegate") .MakeGenericMethod(parameterType); var del = createDelegate.Invoke(null, new object[] { target, method }); return del; } public static Action<TEvent> CreateDelegate<TEvent>(object target, MethodInfo method) { var del = (Action<TEvent>)Delegate.CreateDelegate(typeof(Action<TEvent>), target, method); return del; } }


Use Delegate.CreateDelegate :

// Static method Action action = (Action) Delegate.CreateDelegate(typeof(Action), method); // Instance method (on "target") Action action = (Action) Delegate.CreateDelegate(typeof(Action), target, method);

Para una Action<T> etc., simplemente especifique el tipo de delegado apropiado en todas partes.

En .NET Core, Delegate.CreateDelegate no existe, pero MethodInfo.CreateDelegate hace:

// Static method Action action = (Action) method.CreateDelegate(typeof(Action)); // Instance method (on "target") Action action = (Action) method.CreateDelegate(typeof(Action), target);