Tengo algunas clases que no implementan una determinada interfaz pero cumplen estructuralmente con esa interfaz.Creación automática de un contenedor para implementar una interfaz
interface IFoo {
void method();
}
class Bar { // does not implement IFoo
public void method() {...}
}
Ahora, podría escribir una envoltura alrededor de aquellas clases que simplemente delegan a la clase envuelta
class BarWrapper : IFoo {
Bar bar = new Bar();
public void method()
{
bar.method();
}
}
Pero eso es un montón de trabajo tedioso. ¿Pueden esas clases contenedoras generarse automáticamente? Algo así como:
IFoo foo = CreateWrapper<IFoo>(new Bar());
Estoy seguro de que podría hacer esto con Reflection.Emit pero nunca he utilizado y que no se ve muy fácil a primera vista.
¿Hay una manera más fácil o quizás hay una biblioteca que ya implementa esto?
Si al final tener que escribir usted mismo, esto podría ayudar como un ejemplo relacionado: http://stackoverflow.com/questions/847809/how-can-i-write-a-generic-container-class-that-implements-a-given-interface-in -c/847975 # 847975 –