I have an IEnumerable<T>
, and I want to call the Enumerable.Contains
method by reflection. I'm just struggling to get the syntax right. Here's what I currently have:
var containsMethod = typeof(Enumerable).GetMethod("Contains",
new[] {
typeof(IEnumerable<T>),
typeof(T)
});
This just comes back with a null.
What is the correct way to get the MethodInfo
?
What is the correct way to get the MethodInfo?
You have to find the generic method - which is unfortunately a bit of a pain - and then construct that with the appropriate arguments. In this case you know that there are only 2 Contains
overloads, and the one you want has two arguments, so you can use:
var method = typeof(Enumerable).GetMethods()
.Where(m => m.Name == "Contains")
.Single(m => m.GetParameters().Length == 2)
.MakeGenericMethod(typeof(T));
You should then be able to invoke it appropriately.
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