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?
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.
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
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
steht dem der Assembly B programmiert der SourceCode von Assembly A zur Verfügung?
Ja.
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
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]
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.
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.
Irgendwo gab's hier schon mal einen Thread dazu.
Evtl. der aus meinem Edit, also Viele Methoden in Klasse, wie umstrukturieren?