Здравствуйте, gandjustas, Вы писали:
S>>Этот код кидает исключение RuntimeBinderException с сообщением
S>>S>>'ConsoleApp.IFoo' does not contain a definition for 'Foo'
G>Говорит что ConsoleApp.IFoo2 не содержит метода Foo.
Спасибо, мой английский позволяет понять это сообщение.
S>>Есть у кого-нибудь идеи, почему так происходит?
G>Потому что IFoo2 действительно не содержит такого метода.
Действительно
G>Это C# делает вид, что методы в интерфейсах "наследуются", на уровне IL не так дела обстоят.
G>RuntimeBinder довольно глуп, он на вход получает информацию что надо найти метод Foo для типа IFoo2, и его не находит, можете сами рефлексией посмотреть что у него такого метода нет. А пройтись по его интерфейсам, как это делает компилятор, почему-то не догадывается.
Я где-то краем глаза читал что RuntimeBinder делает в рантайме ту же работу, что и компилятор во время компиляции. Похоже, что это не так. В спеке на эту тему ничего не нашел.
G>Надо багу засабмитить.
Мне тоже кажется что это бага, но предлагаю подождать других мнений.