Entwicklung & Code

Neu in .NET 9.0 [28]: Feature-Flags


Mit der neuen Annotation [FeatureSwitchDefinition] kann man Bezug auf eine vom Namen her selbst gewählte Projekteinstellung in der Projektdatei nehmen und für bedingte Kompilierung sorgen. Das bedeutet, dass beim Einsatz von Trimming/AOT der Programmcode für deaktivierte Features nicht übersetzt wird.




Dr. Holger Schwichtenberg ist technischer Leiter des Expertennetzwerks www.IT-Visions.de, das mit 53 renommierten Experten zahlreiche mittlere und große Unternehmen durch Beratungen und Schulungen sowie bei der Softwareentwicklung unterstützt. Durch seine Auftritte auf zahlreichen nationalen und internationalen Fachkonferenzen sowie mehr als 90 Fachbücher und mehr als 1500 Fachartikel gehört Holger Schwichtenberg zu den bekanntesten Experten für .NET und Webtechniken in Deutschland.




(Bild: coffeemill/123rf.com)

Das Programm steht fest: Auf der Online-Konferenz betterCode() .NET 10.0 am 18. November 2025 – ausgerichtet von iX und dpunkt.verlag in Kooperation mit IT-visions.de – präsentieren der Autor dieses Artikels, Dr. Holger Schwichtenberg, und weitere Experten die wichtigsten Neuerungen. Frühbuchertickets sind im Online-Shop erhältlich.

Im konkreten Beispiel funktioniert das so: Wenn der Feature-Switch "ColorPrinting.IsSupported" auf false steht, wird die Methode Print() beim Trimming entfernt, denn sie wird lediglich an einer Stelle aufgerufen, bedingt von der Eigenschaft IsSupported in der Klasse ColorPrinting.


using System.Diagnostics.CodeAnalysis;
using ITVisions;
 
namespace NET9_Console.FCL90
{
 public class ColorPrinting
 {
  [FeatureSwitchDefinition("ColorPrinting.IsSupported")] // liest Wert aus RuntimeHostConfigurationOption
  internal static bool IsSupported => AppContext.TryGetSwitch("ColorPrinting.IsSupported", out bool isEnabled) ? isEnabled : true;
 
  /// 
  internal static void Print(string s) 
  {
   CUI.Print(s, ConsoleColor.Yellow);
  }
 }
 
 /// 
 class FCL9_FeatureSwitches
 {
  public void Run()
  {
   CUI.Demo(nameof(FCL9_FeatureSwitches));
 
   Console.WriteLine("ColorPrinting.IsSupported=" + ColorPrinting.IsSupported);
 
   // Bedingung auf Feature Switch
   if (ColorPrinting.IsSupported)
   {
    // Dieser Aufruf und damit die ganze Methode Print() wird beim Trimming entfernt, wenn ColorPrinting.IsSupported=false
    ColorPrinting.Print("Ausgabe in Farbe");
   }
   else
   {
    CUI.Print("Keine Farbe");
   }
  }
 }
}


Folgendermaßen aktiviert man obiges Feature durch einen Eintrag in der Projektdatei. Jetzt wird die Methode Print() in der Klasse ColorPrinting beim Trimming nicht entfernt:




 
 




Wenn das Feature aktiviert ist, erscheint der Text farbig.

Folgendermaßen deaktiviert man obiges Feature durch einen Eintrag in der Projektdatei. Jetzt wird das Trimming die Methode Print() aus der Klasse ColorPrinting entfernen:



 
  
  
 




Wenn das Feature deaktiviert ist, erscheint der Text nicht farbig.


(rme)



Source link

Leave a Reply

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Beliebt

Die mobile Version verlassen