Schlagwort: C#

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 …

Threads und Deadlocks

Der Einsatz von Sperren zur Thread-Synchronisation birgt immer ein Deadlock-Risiko. Blockierungen treten dann auf, wenn zwei Sperren in unterschiedlicher Reihenfolge benutzt werden. Das folgende Beispiel zeigt exemplarisch eine fehlerhafte Implementierung, die im Multithreading-Einsatz zu Deadlocks führen wird.

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 …