Я собираюсь взять набор объектов, допустим, в настоящий момент существует 3 объекта, которые реализуют общий интерфейс, а затем заключить эти объекты в четвертый объект, также реализующий тот же интерфейс.
Реализации методов и свойств четвертого объекта будут просто вызывать соответствующие биты этих трех базовых объектов. Я знаю, что здесь будут случаи, когда это не имеет смысла, но это для архитектуры многоадресной рассылки услуг, поэтому уже существует хороший набор ограничений.
У меня вопрос, с чего начать. Генерация этого четвертого объекта должна выполняться в памяти во время выполнения, поэтому я думаю Reflection.Emit
, к сожалению, у меня недостаточно опыта в этом, чтобы даже знать, с чего начать.
Нужно ли мне создавать сборку в памяти? Конечно, это выглядит именно так, но я просто хотел бы быстро указать, с чего мне следует начать.
В основном я собираюсь взять интерфейс и список экземпляров объекта, реализующих этот интерфейс, и создать новый объект, а также реализовать этот интерфейс, который должен «многоадресно передавать» все вызовы методов и доступ к свойствам для всех базовых объектов, на по крайней мере, насколько это возможно. Будет куча проблем с исключениями и тому подобным, но я займусь этими проблемами, когда доберусь до них.
Это для сервис-ориентированной архитектуры, где я хотел бы иметь существующий код, который берет, в качестве примера, службу регистратора, чтобы теперь обращаться к нескольким службам регистратора, без необходимости изменять код, который использует службы. Вместо этого я хотел бы во время выполнения сгенерировать оболочку службы ведения журнала, которая внутри просто вызывает соответствующие методы для нескольких базовых объектов.
Это для .NET 3.5 и C #.