У меня есть некоторый код, который перебирает неуниверсальный IDictionary
, сначала вызывая метод LINQ Cast
. Однако я получаю недопустимое исключение приведения при передаче универсальной реализации словаря, хотя я специально использую его через неуниверсальный интерфейс IDictionary
.
IDictionary dict = new Dictionary<object, object> {{"test", "test"}};
foreach (var item in dict)
{
Debug.Assert(item is DictionaryEntry); // works
}
dict.Cast<DictionaryEntry>().ToList(); // FAILS
Почему приведенный выше метод Cast не работает, если обычная итерация не работает? Есть ли надежный способ преобразовать неуниверсальный словарь в перечисление DictionaryEntry
, не прибегая к ручному построению списка?