Laden...

Partielle Klassen auch aus anderen Assemblies einbinden?

Erstellt von #coder# vor 13 Jahren Letzter Beitrag vor 13 Jahren 1.580 Views
#coder# Themenstarter:in
395 Beiträge seit 2008
vor 13 Jahren
Partielle Klassen auch aus anderen Assemblies einbinden?

Ist es möglich in der Assembly A und Assembly B eine gleiche Partielle Klasse mit dem gleichen Namespace zu verwenden. Bis jetzt habe ich eine Klase immer innerhalb der gleichen Assembly mit partial erweitert. Nun würde ich gerne die Klasse durch neue Funktionen in einer neuen Assembly erweitern, ist das möglich?

297 Beiträge seit 2008
vor 13 Jahren

In dem MSDN-Artikel zu dem Thema steht:

Alle partiellen Typdefinitionen, die als Teile desselben Typs vorgesehen sind, müssen in derselben Assembly und demselben Modul (EXE- oder DLL-Datei) definiert sein. Partielle Definitionen können sich nicht über mehrere Module erstrecken.

Aber warum verwendest du nicht Vererbung?

There are 10 kind of people, those who understand binary and those who don't.

D
500 Beiträge seit 2007
vor 13 Jahren

Moin!

Nun würde ich gerne die Klasse durch neue Funktionen in einer neuen Assembly erweitern, ist das möglich

Ja, auch durch Extension Methods.

Aber warum verwendest du nicht Vererbung?

Bitte nur Vererbung dann verwenden, wenn es Sinn macht und das Liskov'sche Substitionsprinzip nicht verletzt wird.

Gruss,
DaMoe

S
443 Beiträge seit 2008
vor 13 Jahren

steht dem der Assembly B programmiert der SourceCode von Assembly A zur Verfügung?

mbg
Rossegger Robert
mehr fragen mehr wissen

Montag morgen ist die beste Zeit um eine erfolgreiche Woche zu beginnen

#coder# Themenstarter:in
395 Beiträge seit 2008
vor 13 Jahren

steht dem der Assembly B programmiert der SourceCode von Assembly A zur Verfügung?

Ja.

S
443 Beiträge seit 2008
vor 13 Jahren

Dann gäbs ne Möglichkeit, die nennt sich Verlinken

Es gibt ein Projekt in der Assembly A mit einer Klasse ClassA

public partial class ClassA
{
}

in der Assembly B wird das File als Link eingefügt und dann kann man im erstellten File ClassA.Customer {0} schreiben

public partial class ClassA
{
}

der Nachteil daran, Programmierer B kann Assembly A verändern
(kann man mit SVN commit Regeln verhindern)

mbg
Rossegger Robert
mehr fragen mehr wissen

Montag morgen ist die beste Zeit um eine erfolgreiche Woche zu beginnen

5.742 Beiträge seit 2007
vor 13 Jahren

Aber warum verwendest du nicht Vererbung?

Die Frage ist IMHO durchaus angebracht.
Vererbung ist immerhin eine der objektorientierten Möglichkeiten, eine Klasse zu erweitern.

Alternativ kannst du auch eine Komposition aufbauen - entsprechende Pattern gibt's genügend.

[EDIT]Um es noch einmal klar zu stellen: Auch ich halte partial nicht für eine saubere Möglichkeit, eine Klasse zu erweitern (siehe auch Viele Methoden in Klasse, wie umstrukturieren?)[/EDIT]

297 Beiträge seit 2008
vor 13 Jahren

Ob man jetzt Vererbung, Komposition oder was anderes verwendet, hängt von den Umständen ab. Meiner Meinung nach machen diese Möglichkeiten aber wesentlich mehr Sinn als eine Erweiterung mittels partial.

There are 10 kind of people, those who understand binary and those who don't.

U
1.688 Beiträge seit 2007
vor 13 Jahren

Meiner Meinung nach machen diese Möglichkeiten aber wesentlich mehr Sinn als eine Erweiterung mittels partial.

Richtig - weil "partial" eben gar keine Möglichkeit der "Erweiterung" ist, sondern nur ein Hilfsmittel zur Aufteilung von Klassen auf verschiedene Quelldateien (Trennung zwischen Designer & Code, Aufteilung zwischen Entwicklern, ...).

Irgendwo gab's hier schon mal einen Thread dazu.

5.742 Beiträge seit 2007
vor 13 Jahren

Irgendwo gab's hier schon mal einen Thread dazu.

Evtl. der aus meinem Edit, also Viele Methoden in Klasse, wie umstrukturieren?