Ho un MethodInfo passata a una funzione e voglio fare quanto segueCome faccio a determinare se un metodo è un'istanza generica di un metodo generico
MethodInfo containsMethod = typeof(ICollection<>).GetMethod("Contains");
if (methodInfo.Equals(containsMethod)
{
// do something
}
Ma questo non funziona perché il MethodInfo ha un tipo generico specifico. Ad esempio, funziona se avessi saputo che ICollection era sempre di tipo string.
MethodInfo containsMethod = typeof(ICollection<string>).GetMethod("Contains");
if (methodInfo.Equals(containsMethod)
{
// do something
}
Come si può verificare se il MethodInfo è un QUALSIASI digitato istanza del metodo generico, senza preoccuparsi di ciò che il tipo è?
Grazie.
EDIT: Domanda chiarimento
Come ha giustamente osservato il metodo non è generico, ma la classe che contiene è quindi la domanda è più come scopro se il MethodInfo è per un tipo che è un'istanza tipizzata di ICollection <>.
EDIT: più contesto
Sto scrivendo un fornitore di Linq e cercando di gestire la "in" caso
IList<string> myList = new List<string>{ "1", "2" };
from Something s in ...
where myList.Contains(s.name)
select s;
IMO più semplice e chiaro, grazie. –