Invoking Generic Methods using Reflection

by Mwwhited 11. August 2009 10:08

Using reflection to create classes and invoke methods can be tricky. Worse still can when you try to invoke methods with generic arguments. This is a short and quick example


static void Main(string[] args)
{
    var flags = BindingFlags.Static | BindingFlags.NonPublic;
    var t = typeof(Program);
    var mi = t.GetMethod("Loopback", flags);
    var gargs = mi.GetGenericArguments();

    var pargs = new object[]  {"input value"};
    var gargIn = pargs.Select(a => a.GetType()).ToArray();
    var gmi = mi.MakeGenericMethod(gargIn);
    var res = gmi.Invoke(null, pargs);
}

static T Loopback(T input)
{
    return input;
}

Tags: , ,

Programming

Comments are closed

Powered by BlogEngine.NET 1.5.0.7
Theme by Mads Kristensen

RecentPosts

Badges