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;
}