У меня есть следующий сценарий:
interface IMyInterface { ... }
Определяет общий интерфейс со свойствами, методами и т. Д.
class MyClass : ABaseClass, IMyInterface { ... }
Реализует IMyInterface и является производным от базового класса.
class MyLazyLoadingClass : IMyInterface { ... }
Возвращает некоторые предопределенные значения для некоторых методов / свойств и создает экземпляр MyClass через делегата при доступе к другим методам / свойствам. Он также определяет следующее преобразование:
implicit operator MyClass(MyLazyLoadingClass myLazyLoadingClass) { ... }
Который создает экземпляр и возвращает его. (Примечание: я знаю, что неявное преобразование не должно включать такие операции, но из-за существующей конструкции системы я не нашел другого решения.)
В основном реализация работает. Моя проблема:
MyClass (или прокси-объект MyLazyLoadingClass) проверяется с помощью отражения для определения / получения / установки свойств / пользовательских атрибутов. Поскольку MyLazyLoadingClass не является производным от ABaseClass, он не содержит те же свойства / методы / пользовательские / атрибуты.
Есть ли способ сообщить Reflection, что он должен использовать экземпляр MyClass при проверке MyLazyLoadingClass? или возможно ли «заменить» экземпляр MyLazyLoadingClass на загруженный экземпляр MyClass? (Я так не думаю).