IRONSOFTWAREHOME
ENTWICKLER-UPDATES

C# Diskriminierte Vereinigungen (Wie es für Entwickler funktioniert)

Jacob Mellor, Chief Technology Officer @ Team Iron
Jacob Mellor
Updated: 23. April 2026

Als .NET-Entwickler, der mit der dynamischen PDF-Erstellung arbeitet und IronPDF verwendet, müssen Sie häufig eine Reihe spezifischer Typen darstellen und verwalten – denken Sie an verschiedene Arten von Dokumentdaten, Protokollnachrichten, Benutzerrollen oder Exportoptionen. Hier kommt das Konzept der diskriminierten Union in C# ins Spiel.

Während C# keine native Unterstützung für diskriminierte Unions wie F# oder Rust bietet, können Sie dennoch diskriminierte Unions effektiv simulieren. In diesem Blogbeitrag werden wir darauf eingehen, wie man einen diskriminierten Union-Typ in C# definiert und verwendet, zeigen, wie man ihn mit IronPDF für die reale PDF-Verarbeitung anwendet und die Vorteile dieses Musters erläutert – besonders in Kombination mit Pattern Matching.

What Are Discriminated Unions in C#?

Diskriminierte Unions, auch bekannt als markierte Unions oder Vereinigungstypen, ermöglichen es einer Variablen, einen Wert aus einer begrenzten Menge möglicher Optionen zu halten, wobei jede Option mit einem eindeutigen Fallbezeichner verbunden ist.

In anderen Sprachen wie F# könnte man sie mit dem Schlüsselwort union definieren. C# bietet dieses Feature nicht nativ, aber Entwickler können clevere Kombinationen aus Datensätzen, Klassen und Switch-Ausdrücken verwenden, um sie zu simulieren.

Zum Beispiel:

public abstract record PdfAction;
public record GenerateReport(string ReportName) : PdfAction;
public record LogError(string Message) : PdfAction;
public record ExportToExcel(string FilePath) : PdfAction;

Jeder oben gezeigte Datensatz stellt einen einzelnen Fall der Union dar. Der Basis-Typ PdfAction ist der Diskriminator.

Warum diskriminierte Unions in IronPDF-Workflows wichtig sind

Stellen Sie sich vor, Sie erstellen einen PDF-Berichtgenerator mit IronPDF und müssen basierend auf den Eingaben eines Benutzers verschiedene Aktionen ausführen – vielleicht ein PDF generieren, einen Fehler protokollieren oder Daten exportieren.

Diskriminierte Unions in C# ermöglichen es Ihnen, diese Optionstypen klar darzustellen, was zu Kompilierungszeit-Sicherheit, weniger Fehlern und klarerer Logik führt.

So verwenden Sie es mit IronPDF:

void HandlePdfAction(PdfAction action)
{
    switch (action)
    {
        case GenerateReport r:
            var pdf = new IronPdf.HtmlToPdf().RenderHtmlAsPdf("<h1>" + r.ReportName + "</h1>");
            pdf.SaveAs(r.ReportName + ".pdf");
            break;
        case LogError e:
            Console.WriteLine("Logging Error: " + e.Message);
            break;
        case ExportToExcel x:
            Console.WriteLine("Exporting to Excel at " + x.FilePath);
            break;
        default:
            throw new NotSupportedException("Unknown action");
    }
}

Dieser Ansatz hält Ihren Code organisiert und robust und macht es Entwicklern einfacher, alle möglichen Optionen an einem Ort zu verstehen.

Simulating Discriminated Unions in C# – Struct vs. Record vs. Class

Obwohl C# das union-Schlüsselwort fehlt, können Sie diskriminierte Unions simulieren, indem Sie verwenden:

  • Records: Ideal für unveränderliche Daten und unterstützt Pattern Matching auf saubere Weise.
  • Klassen: Mehr Flexibilität bei Vererbung und Referenzsemantik.
  • Strukturen: Nützlich für Werttypen, aber weniger flexibel bei Referenztypen oder Vererbung.

C#-Diskriminierte Vereinigungen (Wie es für Entwickler funktioniert): Abbildung 1 - Struktur vs. Aufzeichnung vs. Klasse

Wenn Leistung und Speicherauslegung wichtig sind – z. B. bei Hochgeschwindigkeits-PDF-Protokollierung – könnten Sie in Erwägung ziehen, diskriminierte Unionen mit Bedacht zu verwenden:

public interface IAction { }
public readonly struct SaveAction : IAction
{
    public string FileName { get; }
    public SaveAction(string fileName) => FileName = fileName;
}

Hinweis: Sie verlieren einige Pattern-Matching-Vorteile mit Strukturen, insbesondere wenn Sie auf Switch-Ausdrücke angewiesen sind.

Benefits of Using Discriminated Unions in C#

Es gibt mehrere entscheidende Vorteile bei der Annahme dieses Softwareentwicklungs-Musters:

  • Kompilierzeitsicherheit: Fehlende Fälle in einem Switch-Ausdruck werden vor der Laufzeit abgefangen.
  • Klarere Logik: Aktionen lassen sich mit benannten Fällen leichter schreiben, kommentieren und begründen.
  • Trennung der Belange: Sie entkoppeln Verhaltensweisen auf Basis von Daten anstatt von Typhierarchien.
  • Einfaches Refactoring: Das Hinzufügen oder Entfernen von Fällen wird unkomplizierter.

In Verbindung mit IronPDF erleichtert dies die Verwaltung von Benutzereingaben, Rendering-Logik oder das Erstellen dynamischer Vorlagen mit unterschiedlichen Wertpipelines.

Wann sollten diskriminierte Unions mit IronPDF verwendet werden

Hier sind einige praktische Szenarien, in denen dieses Muster hervorragend funktioniert:

  • PDF-Generierungs-Workflows: Verschiedene Schritte im Lebenszyklus eines Dokuments (generieren, speichern, per E-Mail versenden).
  • Berechtigungsmodelle: Stellen unterschiedliche Benutzerzugriffsebenen dar.
  • Protokollierungssysteme: Verwenden Sie diskriminierte Union-Typen für Protokollierungsstufen (info, error, debug).
  • Unit-Tests: Testaktionen als Union-Typen definieren, um wartungsfreundliche Logikbäume zu schaffen.
  • Exportoptionen: Ausgabeziele wie PDF, Excel, Word als Vereinigungsinstanzen darstellen.

C#-Diskriminierte Vereinigungen (Wie es für Entwickler funktioniert): Abbildung 2 - Häufige Szenarien für diskriminierte Vereinigungen in .NET-Apps

Beispiel - Handhabung von PDF-Aktionen aus UI-Events

Angenommen, Sie erfassen UI-Ereignisse und möchten sie mit diskriminierten Unions an IronPDF-Aufgaben weiterleiten:

public abstract record UserAction;
public record GeneratePdf(string HtmlContent, string FileName) : UserAction;
public record ShowMessage(string Text) : UserAction;
public record ExitApplication() : UserAction;
void OnUserEvent(UserAction action)
{
    switch (action)
    {
        case GeneratePdf pdf:
            var renderer = new IronPdf.HtmlToPdf();
            var document = renderer.RenderHtmlAsPdf(pdf.HtmlContent);
            document.SaveAs(pdf.FileName);
            break;
        case ShowMessage msg:
            MessageBox.Show(msg.Text);
            break;
        case ExitApplication:
            Application.Exit();
            break;
    }
}

Dies ermöglicht es Ihnen, Ereignisse mit klarer Logik darzustellen und die Abhängigkeit von öffentlichen Objekttypen oder übermäßig dynamischem Handling zu verringern.

Future Outlook – Will C# Ever Support Native Discriminated Unions?

Es gab bereits einen Vorschlag, native Unterstützung für diskriminierte Unions in C# hinzuzufügen, insbesondere mit der wachsenden Nachfrage nach ausdrucksstärkeren Typsystemen. Während die Sprache noch kein echtes union-Schlüsselwort eingeführt hat, entwickelt sich C# kontinuierlich weiter – indem es Funktionen wie Datensätze, Pattern Matching und Switch-Ausdrücke näher an die volle Funktionalität von diskriminierten Unions bringt.

.NET-Entwickler, die an modernen, funktional-freundlichen Sprachkonstrukten interessiert sind, sollten dieses Thema genau im Auge behalten.

Abschließende Gedanken

Die Verwendung von diskriminierten Unions in C#, auch ohne native Unterstützung, kann erheblich verbessern, wie Sie Logik in IronPDF-Anwendungen strukturieren und darstellen. Durch die Nutzung von Datensätzen, Switch-Ausdrücken und Basisklassen machen Sie Ihren Code lesbarer, wartbarer und widerstandsfähiger gegenüber Fehlern – und gleichzeitig einen deklarativeren und ausdrucksvolleren Umgang mit PDF-bezogenen Aufgaben ermöglichen.

Wenn Sie ein Softwareentwickler sind, der moderne, flexible .NET-Anwendungen erstellt, ist dieses Muster ein unverzichtbares Werkzeug in Ihrem Toolkit.

Testen Sie IronPDF noch heute kostenlos

Bereit, Ihre C#-PDF-Erzeugung auf die nächste Stufe zu heben? Laden Sie IronPDF herunter und beginnen Sie mit einer kostenlosen Testversion. Egal, ob Sie Dokumente aus HTML erstellen, Exporte protokollieren oder Berichte mit diskriminierten Unions automatisieren – IronPDF bietet Ihnen die Leistung und Performance, die Ihre App verdient.

Jacob Mellor, Chief Technology Officer @ Team Iron
Chief Technology Officer

Jacob Mellor ist Chief Technology Officer bei Iron Software und ein visionärer Ingenieur, der Pionierarbeit in der C# PDF-Technologie leistet. Als der ursprüngliche Entwickler hinter der Kern-Codebasis von Iron Software hat er die Produktarchitektur des Unternehmens seit seiner Gründung geprägt und es zusammen mit CEO Cameron Rimington in ein Unternehmen mit mehr als 50 Mitarbeitern verwandelt, das die NASA, Tesla und globale Regierungsbehörden beliefert.

...
Weiterlesen

Verwandte Artikel

Key in blue circle

Holen Sie sich sofort Ihren kostenlosen 30-Tage-Testschlüssel.

Keine Einschränkungen. 100 % freigeschaltet. Keine Kreditkarte.

bullet_checkedIhr Testlizenzschlüssel wurde Ihnen per E-Mail gesendet.Keine Einschränkungen. 100 % freigeschaltet. Keine Kreditkarte.
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
Buchen Sie Ihre kostenlose Live-Demo
Booking Badge

Von Millionen von Ingenieur*innen weltweit vertraut

Kundenlogos von Iron Software
Erhalten Sie Ihre unverbindliche Beratung
Füllen Sie das Formular unten aus oder senden Sie eine E-Mail an sales@ironsoftware.com
Ihre Daten werden immer vertraulich behandelt.
Von Millionen von Ingenieur*innen weltweit vertraut
Kundenlogos von Iron Software
Erhalten Sie sofort Ihren kostenlosen 30-Tage-Testschlüssel.
Ihr Testlizenzschlüssel wurde Ihnen per E-Mail gesendet.