предположим следующие методы расширения:
public static string ToFooBarString(this object obj)
{
...
}
public static string ToFooBarString< T >(this IEnumerable< T > obj)
{
...
}
Теперь я вызываю это поверх реализации интерфейса IEnumerable‹ T>, скажем
Dictionary< int , string > f; // implements IEnumerable< KeyValuePair< int , string > >
f.ToFooBarString(); // <--- which one is called?
какой из них называется в данном случае и почему?