While executing the following code i gets this error "Late bound operations cannot be performed on types or methods for which ContainsGenericParameters is true."
class Program
{
static void Main(string[] args)
{
MethodInfo MI = typeof(MyClass).GetMethod("TestProc");
MI.MakeGenericMethod(new [] {typeof(string)});
MI.Invoke(null, new [] {"Hello"});
}
}
class MyClass
{
public static void TestProc<T>(T prefix)
{
Console.WriteLine("Hello");
}
}
The above code is just a scaled version of the actual problem i am facing. Please help.
You are calling MethodInfo.MakeGenericMethod
but throwing away the return value. The return value itself is the method you want to Invoke
:
MethodInfo genericMethod = MI.MakeGenericMethod(new[] { typeof(string) });
genericMethod.Invoke(null, new[] { "Hello" });
The only problem with the code that you post is:
MI.MakeGenericMethod(new [] {typeof(string)});
Should be
MI = MI.MakeGenericMethod(new [] {typeof(string)});
You're not grabbing a reference to the 'baked' generic.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With