Kategorie: .NET

Liersch.JsonSerialization – Reflection-basierte JSON-Unterstützung für .NET

Liersch.JsonSerialization erweitert Liersch.Json um die Reflection-basierte Serialisierung und Deserialisierung. Auf Basis von Liersch.Reflection werden dabei Felder und Eigenschaften durch dynamisch generierten IL-Code effizient gelesen und geschrieben. Die Bibliothek ist für viele .NET-Plattformen geeignet.

Weiterlesen …

Liersch.Reflection – .NET-Bibliothek für bessere Performance

Liersch.Reflection verbessert die Performance der Reflection-API signifikant, indem für Konstruktor- und Funktionsaufrufe, sowie für Feldzugriffe dynamischer IL-Code erzeugt wird. Die Zugriffsgeschwindigkeit gleicht dadurch fast einem Direktzugriff. Es werden alle wichtigen .NET-Plattformen unterstützt (ab .NET Framework 2.0, ab .NET Core 2.0 und ab .NET Standard 2.1).

Weiterlesen …

Nullwerte für Wertetypen

Im .NET Framework sind Datentypen entweder Wertetypen oder Referenztypen. Wertetypen haben grundsätzlich einen Standardkonstruktor, der dafür sorgt, dass alle Member-Variablen mit ihrem Standardwert initialisiert werden. Als Standardwert wird dabei auf Speicherebene der Wert 0 verstanden. Es ist generell nicht möglich, für Wertetypen einen Standardkonstruktor zu implementieren.

Weiterlesen …

Eigenschaften statt schreibgeschützter Variablen

Das .NET Framework kennt schreibgeschützte Variablen als Alternative zu Konstanten. Während der Wert von Konstanten bereits bei der Kompilierung bekannt sein muss, können schreibgeschützte Variablen zur Laufzeit im Konstruktor initialisiert werden (oder natürlich auch inline). Variablen veränderlicher Verweistypen Eine Variable kann unabhängig vom Datentyp als schreibgeschützt gekennzeichnet werden. Der Schreibschutz ist für Werttypen nach der […]

Weiterlesen …

Erweiterungsfunktionen in C# 3.0

Erweiterungsfunktionen werden ab C# 3.0 unterstützt. Sie ermöglichen das nachträgliche Hinzufügen von Member-Funktionen zu Klassen und Schnittstellen. Versiegelte Klassen können ebenso erweitert werden, wie Klassen anderer Assemblies. Erweiterungsfunktionen können bestehende Funktionen nicht überschreiben oder verdecken. Bestehende Funktionen haben gegenüber Erweiterungsfunktionen Vorrang.

Weiterlesen …