Ich habe einige Klassen, die nicht eine bestimmte Schnittstelle implementieren, aber strukturell dieser Schnittstelle entsprechen.Automatisches Erstellen eines Wrappers zur Implementierung einer Schnittstelle
interface IFoo {
void method();
}
class Bar { // does not implement IFoo
public void method() {...}
}
Nun könnte ich einen Wrapper um die Klassen schreiben, die einfach auf die gewickelten Klasse delegieren
class BarWrapper : IFoo {
Bar bar = new Bar();
public void method()
{
bar.method();
}
}
Aber das ist viel mühsamer Arbeit. Können diese Wrapper-Klassen irgendwie automatisch generiert werden? Etwas wie:
IFoo foo = CreateWrapper<IFoo>(new Bar());
Ich bin sicher, dass Sie dies mit Reflection.Emit tun könnte, aber ich habe noch nie verwendet, dass und es sieht nicht sehr einfach, auf den ersten Blick.
Gibt es einen einfacheren Weg oder gibt es vielleicht eine Bibliothek, die dies bereits implementiert?
Wenn Sie am Ende zu schreiben es selbst, könnte dies als ein verwandtes Beispiel helfen: http://stackoverflow.com/questions/847809/how-can-i-write-a-generic-container-class-that-implements-a-given-interface-in -c/847975 # 847975 –