Почему я не могу проиндексировать ExpandoObject?

Что-то удивило меня, когда я смотрел на динамику C # сегодня (я никогда не использовал их много, но в последнее время я экспериментировал с веб-фреймворком Nancy). Я обнаружил, что я не мог сделать это:

dynamic expando = new ExpandoObject();

expando.name = "John";

Console.WriteLine(expando["name"]);

Последняя строка выдает исключение:

Невозможно применить индексирование с помощью [] к выражению типа 'System.Dynamic.ExpandoObject'

Я понимаю сообщение об ошибке, но не понимаю, почему это происходит. Я посмотрел на документацию для ExpandoObject, и он явно реализуетIDictionary<,> и, таким образом, имеетthis.[index] метод (MSDN). Почему я не могу это назвать?

Конечно, ничто не мешает мнеExpandoObject вручную к словарю, а затем индексировать его, но этот тип не поддается определению; это также не объясняет, как Expando смог скрыть метод одного из своих интерфейсов.

Что тут происходит?

Ответы на вопрос(1)

Ваш ответ на вопрос