foreach
забавный зверь - он по возможности набирается на утку (имеется в виду: ему действительно не нужен API IEnumerable[<T>]
, если существует метод public {something} GetEnumerator()
), а в вашем случае, public
Метод не является общим.Итак ... поменяйте местами:
IEnumerator IEnumerable.GetEnumerator()
{
return internDic.GetEnumerator();
}
public IEnumerator<KeyValuePair<string, string>> GetEnumerator()
{
return internDic.GetEnumerator();
}
Обратите также внимание на то, что обычным способом является просто прокси явной реализации к public
, чтобы избежать ошибок обслуживания, то есть
IEnumerator IEnumerable.GetEnumerator()
=> GetEnumerator();
public IEnumerator<KeyValuePair<string, string>> GetEnumerator()
=> internDic.GetEnumerator();
Youможет даже предоставить пользовательский словарь перечислителя, если вы хотите оптимизировать для этого:
IEnumerator IEnumerable.GetEnumerator()
=> GetEnumerator();
IEnumerator<KeyValuePair<string, string>> IEnumerable<KeyValuePair<string, string>>.GetEnumerator()
=> GetEnumerator();
public Dictionary<string, string>.Enumerator GetEnumerator()
=> internDic.GetEnumerator();