@nevro
не пойми кто

Наследование интерфейсов и приведение по типу интерфейса: они добавляются в метаданные класса?

Класс реализовал интерфейс. Если в один из его методов передать любой объект, но типа такого же интерфейса, то с таким можно будет работать. В .NET, на сколько я понял, у каждого типа и объекта есть свои метаданные. При наследовании интерфейсов метаданные класса и интерфейса объединяются в один?

То есть в памяти лежит один объект типа - и с описаниями методов со static-полями (если есть), и с описаниями методов интерфейса?

Или у метаданных типа есть ссылка на метаданные унаследованного интерфейса и при работе "умной подсказки" и компилятора они сначала смотрят в метаданные объекта, а потом переходят по ссылке на метаданные интерфейса и смотрят там?
  • Вопрос задан
  • 396 просмотров
Пригласить эксперта
Ответы на вопрос 2
@jackroll
Сверхразум
ildasm.exe
Ответ написан
Комментировать
Nipheris
@Nipheris Куратор тега C#
dad1fdc6f77e49efab5032ce7efa934c.png
Возможно я не понял вопроса, но так или иначе в метаинфе о классе есть инфа об интерфейсах, которые он реализует (было бы странно, если бы ее не было :)). Т.к. указана и сборка, и полное имя интерфейса, и IDE-шкам ничего не мешает идти по дереву типов и смотреть где что есть.
Оффтоп: т.к. "наследовать" из интерфейса нечего, принятно говорить, что интерфейс "реализуется" (implemented) классом, чтобы подчеркнуть отличие от наследования, когда помимо установления отношения is-a классом наследуется и какая-то реализация. То, что в описании класса и базовый класс и интерфейсы перечисляются в одном списке не значит, что суть одна и та же.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы