Estoy buscando tomar un conjunto de objetos, digamos que hay 3 objetos vivos en este momento, todos implementan una interfaz común, y luego envuelven esos objetos dentro de un cuarto objeto, también implementando la misma interfaz.Creando una clase para una interfaz en tiempo de ejecución, en C#
Las implementaciones de métodos y propiedades del cuarto objeto simplemente llamarían los bits relevantes en esos 3 objetos subyacentes. Sé que habrá casos aquí donde no tenga sentido hacerlo, pero esto es para una arquitectura de multidifusión de servicio, por lo que ya existe un buen conjunto de limitaciones.
Mi pregunta es por dónde empezar. La generación de ese cuarto objeto debería hacerse en la memoria, en tiempo de ejecución, así que estoy pensando en Reflection.Emit
, desafortunadamente no tengo suficiente experiencia para saber por dónde empezar.
¿Debo construir un ensamblaje en memoria? Seguro que se ve de esa manera, pero solo me gustaría un rápido indicador de dónde debería comenzar.
Básicamente estoy buscando tomar una interfaz, y una lista de instancias de objetos implementando esa interfaz y construyendo un nuevo objeto, también implementando esa interfaz, que debe "multidifundir" todas las llamadas a métodos y el acceso a todas las propiedades objetos subyacentes, al menos tanto como sea posible. Habrá un montón de problemas con excepciones, pero abordaré esos bits cuando los encuentre.
Esto es para una arquitectura orientada a servicios, donde me gustaría tener un código existente que tenga, por ejemplo, un servicio logger, para acceder ahora a múltiples servicios de registrador, sin tener que cambiar el código que usa los servicios . En su lugar, me gustaría generar un wrapper de servicio de registrador que internamente llame a los métodos relevantes en múltiples objetos subyacentes.
Esto es para .NET 3.5 y C#.
De hecho, me escribió un ejemplo que hizo esto (aquí en SO) hace unos meses ... Voy a ver si puedo encontrarlo ... –
Al igual que? http://stackoverflow.com/questions/847809/how-can-i-write-a-generic-container-class-that-implements-a-given-interface-in-c/847975#847975 –
Marc, elija una Para resolver esto, marque la pregunta como duplicada o publique una respuesta real que pueda aceptar. –