Partielle Klasse
Eintrag zuletzt aktualisiert am: 10.01.2020
Eine wichtige Neuerung seit
.NET Framework 2.0 und
C# 2.0 (Jahr 2005) sind partielle Klassen, mit denen der Entwickler den Programmcode einer Klasse auf mehrere einzelne Klassendefinitionen aufteilen kann. Dabei können die partiellen Klassendefinitionen auch in verschiedenen Dateien existieren. Die verschiedenen Klassendefinitionen werden von dem
Compiler zu einer Klasse vereint. Dies bedeutet, dass alle Klassenmitglieder, auch wenn sie in verschiedenen Dateien liegen, sich gegenseitig sehen und nutzen können.
Partielle Klassen erlauben, dass verschiedene Entwickler an einer Klasse arbeiten können bzw. dass ein Teil einer Klasse automatisch durch ein Werkzeug generiert wird, während andere Teile händisch codiert werden. Partielle Klassen werden von verschiedenen Werkzeugen in
Visual Studio verwendet, um um generierten Programmcode von eigenem Programmcode zu trennen (z.B. in
Windows Forms, ASP.NET
Webforms, typisierten
DataSets, Entity Framework,
ASP.NET Core Blazor).
Entwickler können partielle Klassen auch dazu verwenden, den eigenen Code übersichtlicher zu halten. Allerdings gibt es Verfechter der Regel, dass eine Klassendefinition nicht so lang sein sollte, dass man eine Aufteilung auf mehrere Dateien überhaupt in Betracht ziehen müsste (vgl. [
https://dzone.com/articles/rule-30-%E2%80%93-when-method-class-or]). Demnach sollte man in solchen Fällen die Funktionalität der großen Klasse nach inhaltlichen Kriterien auf mehrere Klassen aufteilen.
Hinweis: Über das Schlüsselwort partial verbunden werden können auf diese Weise aber nur Klassen im Quellcode und innerhalb einer
Assembly. Sie können also keine Klasse in einer referenzierten
Assembly erweitern. Letzteres ist nur mit
Vererbung möglich (sofern die Klasse es erlaubt).
Es gelten folgende Bedingungen für den Einsatz des Schlüsselwortes partial:
partial muss klein geschrieben werden
partial muss hinter den Sichtbarkeitsmodifizierern der Klasse stehen
partial muss bei allen Teilklassen angegeben werden
Listing: Datei PartielleKlasse_Teil1.cs
namespace CS20
{
public partial class Buch
{
public string Titel;
}
}
Listing: Datei PartielleKlasse_Teil2.cs
namespace CS20
{
public partial class Buch
{
public string
ISBN;
}
}
Einsatz
Microsoft setzt partuelle Klassen in zahlreichen Frameworks ein, z.B.