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.