Laden...

Objekt wrappen ohne Basisklasse zu referenzieren

Erstellt von rollerfreak2 vor 13 Jahren Letzter Beitrag vor 13 Jahren 1.000 Views
rollerfreak2 Themenstarter:in
916 Beiträge seit 2008
vor 13 Jahren
Objekt wrappen ohne Basisklasse zu referenzieren

Hallo zusammen,

ich habe eine Frage und steh bisschen auf den Schlauch. Folgendes habe ich vor.
Ich habe ein Objekt welches ca. 20 Interfaces implmentiert. Unter anderem das ServiceProvider Interface um sich Service vom Objekt geben zu lassen. Die Basisklasse des Objektes ist mir unbekannt, daher ich kenne nur die Interfaces.

Was ich möchte:
Ich möchte das Objekt so wrappen, das ich im IServiceProvider Interface für genau einen Typ, genauer ein Interface eine eigene Instance zurück geben kann, und nicht die vom Objekt selber. Daher nennen wir das Interface mal IPublicInterface.

Ich gebe also dem Aufrufer nicht das eigentliche Object, sondern das WrapperObject. Dieses soll sich genauso verhalten wie das eigentlich Object, daher alle Interfaces implementieren, jedoch bei dem einen von mir beschrieben Interface möchte ich bei der Anfrage nach einen ganz bestimmten Typ eine eigene Instanz zurück liefern.

Was ich versucht habe:
Ich habe mir gedacht ich implementiere einfach alle Interface, halte einen Member auf das eigentliche Objekt und gebe in dem Interfaces einfach immer das Member Interface bzw. Methode zurück. Das ist aber nicht generisch, und wenn sich ein Interface ändert, dann muss ich nachziehen. Das möchte ich nicht.

Ich dachte an Relfection und evt. code injection, nur hab ich da noch nicht viel mit gemacht.

Kann mir einer von euch helfen, oder ist mein vorhaben so nicht zu realisieren. Wichtig ich kann nicht vom Basistyp ableiten, da dieser mir nicht bekannt ist und ich auch die Assembly nicht referenziert habe und das auch nicht darf.

Danke im voraus

Again what learned...

Gelöschter Account
vor 13 Jahren

und wenn sich ein Interface ändert, dann muss ich nachziehen. Das möchte ich nicht.

das ist aber nun mal so bei interfaces....

eine letzte möglichkeit:
du generierst dir mit CodeDom die klasse mit den implementierten interafces, wobei du die methoden inkl. der signaturen aus dem interface rausziehst.

code injection ist ... nicht angebracht.