Re[2]: RuntimeBinderException & dynamic
От: samius Япония http://sams-tricks.blogspot.com
Дата: 07.06.10 05:55
Оценка:
Здравствуйте, 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>Надо багу засабмитить.

Мне тоже кажется что это бага, но предлагаю подождать других мнений.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.