Фон : у нас есть три сборки:
печать (генерирует отчеты в формате pdf) -> ссылка на businessObjects.interfaces
businessObjects (содержит все наши бизнес-объекты) -> Ссылка на businessObjects.interfaces
businessObjects.interfaces (Здесь мы объявляем свойства для печати, только необходимые свойствавключены) -> Нет ссылок
Объект реализован следующим образом:
открытый интерфейс IDeliveryNote // Сборка: businessObjects.interfaces
открытая частичнаякласс DeliveryNote: IDeliveryNote // Assembly: businessObjects
В DeliveryNote также имеется класс 'Order', в котором содержится логическое значение IsNeutralDelivery *
Проблема: Некоторый отчет (DeliveryNoterReport) глючил, и нам нужно было включить существующее свойство (IsNeutralDelivery) из объекта businessObjects.DeliveryNote.Order -. На самом деле, мы не можем развернуть приложение (не спрашивайте :)Студия магии, поэтому я попытался получить свойство с отражением следующим образом:
bool neutralDeliveryAddressIsNeutralDelivery = (bool)dn.GetType().GetProperty("Order").GetValue(dn).GetType().GetProperty("IsNeutralDelivery").GetValue(dn.GetType().GetProperty("Order").GetValue(dn));
И да, я получил значение, и с этим я мог бы исправить ошибку (только заменить printing.dll)
Вопрос: Почему я могу получить экземпляр объекта DeliveryNote, если у меня нет ссылок на сборку, к которой он принадлежит.