Ist es möglich, eine Teilklasse in separaten DLLs mit zwei Teilen (gleicher Namespace, gleicher Klassenname) zu versehen?
c#
dll
partial-classes
Brad
quelle
quelle
Antworten:
Aus MSDN - Teilklassen und Methoden :
quelle
Nein. Teilklassen sind ein rein sprachliches Merkmal. Wenn eine Assembly kompiliert wird, werden die Dateien kombiniert, um den Typ zu erstellen. Es ist nicht möglich, die Dateien auf verschiedene Assemblys zu verteilen.
Je nachdem, was Sie tun möchten, können Sie möglicherweise Erweiterungsmethoden verwenden , um das zu erreichen, was Sie benötigen.
quelle
Nein, das ist nicht möglich. Wenn die Assembly kompiliert ist, muss die Klasse beendet werden.
quelle
Während andere Antworten das unangenehme "Nein" liefern, das jeder, der auf dieser Seite landet, nicht sehen oder hören wollte, war ich von einem anderen Gedanken beeindruckt, der hier noch nicht erwähnt wurde. Wenn Teilklassen über Baugruppen hinweg zulässig wären, würde man Zugriff auf private Mitglieder vorhandener Typen erhalten, die nicht von ihm geschrieben wurden, sodass er sie auf eine Weise manipulieren kann, die nicht vom ursprünglichen Autor beabsichtigt war, wodurch die Funktionalität aller ererbenden Klassen gefährdet wird auch.
Nicht nur das, diese Klassen in anderen Versammlungen (und ihren Kindern) müssten neu kompiliert werden, damit es funktioniert. Daher ist es logischerweise nicht möglich, eine Klasse auf verschiedene Assemblys aufzuteilen.
quelle
Sie können Erweiterungsmethoden verwenden, wenn Sie einer Klasse in einer anderen DLL eine Methode hinzufügen möchten. Der einzige Nachteil dieser Methode ist, dass Sie keine statischen Methoden hinzufügen können.
quelle
Die Frage ist, warum Sie eine Teilklasse in einer anderen Assembly erstellen möchten. Sie können abstrakte Klassen und Schnittstellen über Assemblys hinweg definieren. Möglicherweise müssen Sie dies untersuchen.
quelle
Sie möchten wahrscheinlich nur eine Wrapper-Klasse in Ihrer eigenen Bibliothek erstellen, um die Klasse in der Bibliothek des 3. Teils herum. Fügen Sie dann der Wrapper-Klasse die gewünschten Funktionen hinzu.
quelle