Zunächst einmal Ihre Frage ist: „können Sie Klasse-Implementierungen in einer Schnittstelle definieren? "
Die Antwort darauf ist "in einer Art und Weise/nein".
Sie können keine Klassendefinitionen "inside" die Schnittstellendefinition einschließen, wenn das das ist, was Sie meinen.
Wie bereits erwähnt, könnte die Implementierung einer solchen Sache über Schnittstelleneigenschaften geschehen.
Sie sollten wahrscheinlich nicht versuchen, Ihre beschriebene Schnittstellenstruktur zu implementieren, es sei denn Klassen existieren, dass die Funktionalität des implementierenden Codes völlig davon abhängt und wenn die Schnittstelle bereits tief in mehrere vorhandene Module integriert ist. Das in sich selbst ist ein Designfehler und könnte mit einer abstrakten Klassenimplementierung vertauscht werden.
Die CLR unterstützt keine Mehrfachvererbung, erlaubt jedoch Typen, zusätzlich zu einer Basisklasse eine oder mehrere Schnittstellen zu implementieren.Daher werden häufig Schnittstellen verwendet, um den Effekt der Mehrfachvererbung zu erzielen.
Das Angeben von Klassen, die von einer einzelnen Basisklasse erben, würde in den meisten Fällen die Klassenhierarchie zu unflexibel machen. Um eine Basisklasse intern zu verwenden, um die Bibliotheksentwicklung zu vereinfachen, sollten öffentliche Mitglieder Arbeit an die Basisklasse delegieren, anstatt von ihr zu erben. Wählen Sie sorgfältig zwischen einer abstrakten Klasse und einer Schnittstelle, wenn eine Abstraktion entwerfen, wie es in wie eine Schnittstelle verhalten kann, dass es kann Mitglieder definieren, und es kann Implementierungsdetails zur Verfügung stellt, sind aber nicht so tun erforderlich und kann Mitglieder hinzufügen, um benötigte zusätzliche Funktionalität zu unterstützen ...
wenn also in der Art und Weise der Sie wollen, weicht sie von dem Konzept der C# Schnittstellen, aber vielleicht scheinen näher die Mehrfachvererbung Modell Sprachen zu imitieren wie C++ in der Praxis, da es implizit "alle Implementierer Ihrer Schnittstelle zwingt, eine Instanz jeder von der Schnittstelle spezifizierten Klasse zu erstellen d Eigenschaften für.
Sie müssen ein wenig darüber nachdenken, warum Sie eine solche Struktur erstellen möchten (die Notwendigkeit, alle Implementierer einer Schnittstelle zu zwingen, auch Instanzen von Klassen zu erstellen, die die Schnittstelle als Eigenschaften definiert).
Dies ist wahrscheinlich ein Konstruktionsfehler in Ihrem Code als es eine fehlende Sprachfunktion ist.
Also auch wenn es sich um eine mögliche Abhilfe ist, würde ich es nicht eine gute Art und Weise der Gestaltung Dinge nennen ...
@roosteronacid: Ist das Ihre gewünschte Antwort? – cseder