Search code examples
c#.netactionmethodinfo

How can I create an Action delegate from MethodInfo?


I want to get an action delegate from a MethodInfo object. Is this possible?


Solution

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

    For an Action<T> etc, just specify the appropriate delegate type everywhere.

    In .NET Core, Delegate.CreateDelegate doesn't exist, but MethodInfo.CreateDelegate does:

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