次の拡張メソッドを想定します。
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?
この場合、どちらが呼び出されますか。また、その理由は何ですか。