Из раздела 13.2 спецификации C # 4:
Обратите внимание, что члены в объекте класса, строго говоря, не являются членами какого-либо интерфейса (§13.2).Однако члены в объекте класса доступны через поиск членов в любом типе интерфейса (§7.4).
И раздел 7.4:
- Сначала наборопределяется число доступных членов с именем N:
- ...
- В противном случае набор состоит из всех доступных (§3.5) членов с именем N в T, включая унаследованные элементы и доступные члены с именем Nв объекте.[...]
И раздел 7.4.1:
В целях поиска члена тип T считаетсяимеют следующие базовые типы:
...
• Если T является типом интерфейса, базовые типы T являются базовыми интерфейсами T и объекта типа класса.
По сути, это выдумка, позволяющая компилятору понять, что члены object
всегда будут действительно доступны во время выполнения, даже если они на самом деле не являются членами типавыражение для интерфейсов.