Здравствуйте, Quebecois, Вы писали:
Q>Оно не соберется без ссылки UserAssembly -> ParentAssembly:
Q>error CS0012: The type 'ParentClass' is defined in an assembly that is not referenced.
Q>Вызов конструктора собирается, вызов метода — нет. Потому что на первого компилятору достаточно пройти список конструкторов класса, а для второго — все методы, включая унаследованные, чтобы выбрать правильный overload.
Q>Что интересно, преобразование к интерфейсу тоже не собирается, хотя теоретически если child-class его реализует, то parent смотреть не надо.
А вы как собираетесь определять, что именно было указано в референсах?
Просто в метаданных
проекта ссылки на Parent нету — там только ссылка на Child. Ссылка на Parent подтягивается инфраструктурой MSBuild неявно.
В метаданных
результирующей сборки ссылка на Parent может быть, а может и не быть — в зависимости от того, во что отрезолвился символ Foo.
В какой момент и как вы предлагаете разработчику определять, что при пересборке Parent можно не пересобирать User?