Kann ich die Mehrfachvererbung mit dynamischen Objekten nachahmen?

8

Ich habe gerade fast alle Klassen in meiner Services Schicht umgestaltet, um von einer ServiceBase zu erben, um Doppelungen beim Initialisieren des Datenzugriffs und andere mit fast allen Diensten identische Aspekte zu vermeiden, aber ich wurde in meinen Spuren angehalten, als ich meine erreichte RoleService , da es von RoleProvider erben muss, damit ich es als offiziellen Anbieter meiner Website konfigurieren kann.

Jetzt ist es ein bisschen spät in der Nacht, und das Koffein ist in Form, aber ich frage mich, ob es eine Möglichkeit gibt, ein dynamisches Objekt anstelle eines abgeleiteten Objekts zu verwenden und alle Mitglieder des Basisobjekts hinzuzufügen das abgeleitete Objekt zur Laufzeit anstelle der Kompilierzeit.

Ist das auch nur entfernt möglich?

    
ProfK 19.04.2011, 21:39
quelle

3 Antworten

3

Nein, DynamicObject lässt nicht zu, dass Sie von zwei konkreten Klassen ableiten, was die Mehrfachvererbung ist und welche von C # nicht unterstützt wird. Das Problem, dem Sie gegenüberstehen, ist entweder gleich, dynamisch oder statisch. Wenn Sie Base1 und Base2 haben, die nichts miteinander zu tun haben, dann kann, sobald Sie Derived von Base1 ableiten, das Derived is Base2 niemals wahr sein. Stattdessen können Sie sich für Derived is IBase2 entscheiden.

Ich empfehle, dass Sie Folgendes verwenden:

zusammen mit mehreren Schnittstellen oder einer konkreten Ableitung und einer Schnittstelle. Um mehrere Vererbungen zu simulieren, müssen Sie:

  • Erstellen Sie eine Schnittstelle anstelle einer Basis
  • Implementieren Sie die Schnittstelle, anstatt von der Basis
  • abzuleiten
  • Erstellen Sie eine Implementierungsklasse, die die Arbeit ausführt, die Sie in der Basis durchführen wollten
  • "Brücke" zum Implementierer durch Weiterleiten aller Schnittstellenaufrufe an eine Instanz des Implementierers

Dies begrenzt die Menge an Code in Ihrer implementierenden Klasse auf nur einen Weiterleitungsaufruf pro Schnittstellenmethode oder -eigenschaft.

    
Rick Sladkey 20.04.2011, 00:46
quelle
1

Das sollten Sie mit der Klasse DynamicObject tun können .

    
Mark Cidade 19.04.2011 21:54
quelle
1

Weiß nicht, ob Sie wirklich die Probleme auf Klassenebene lösen müssen, aber hier sind einige Ressourcen, die hilfreich sein können, um Ihren Rollenanbieter als WCF-Dienst einzurichten:

Ссылка (was für ein Link!)

Ссылка

bearbeiten ---- Auch wurde es in diesem Post hier erwähnt: Kann ich einen benutzerdefinierten Rollenanbieter über einen WCF-Dienst erstellen?

    
porusan 19.04.2011 21:57
quelle

Tags und Links