Почему я не могу проиндексировать ExpandoObject?
Что-то удивило меня, когда я смотрел на динамику C # сегодня (я никогда не использовал их много, но в последнее время я экспериментировал с веб-фреймворком Nancy). Я обнаружил, что я не мог сделать это:
dynamic expando = new ExpandoObject();
expando.name = "John";
Console.WriteLine(expando["name"]);
Последняя строка выдает исключение:
Невозможно применить индексирование с помощью [] к выражению типа 'System.Dynamic.ExpandoObject'
Я понимаю сообщение об ошибке, но не понимаю, почему это происходит. Я посмотрел на документацию для ExpandoObject, и он явно реализуетIDictionary<,>
и, таким образом, имеетthis.[index]
метод (MSDN). Почему я не могу это назвать?
Конечно, ничто не мешает мнеExpandoObject
вручную к словарю, а затем индексировать его, но этот тип не поддается определению; это также не объясняет, как Expando смог скрыть метод одного из своих интерфейсов.
Что тут происходит?