EnumConverter überprüft registrierte Typen, um aufgezählt zu werden
EnumConverter ist ein Typkonverter, der in und von einem enum
Typ konvertiert wird. EnumConverter überprüft jetzt, ob der typ, der registriert werden soll, einen enum
Typ aufweist.
Vorheriges Verhalten
Zuvor wurde der zu registrierende Typ nicht überprüft, um ein enum
Typ zu sein.
Neues Verhalten
Ab .NET 9 löst einen ArgumentException Fehler aus, EnumConverter wenn der zu konvertierende Typ kein enum
Typ ist. Alle abgeleiteten Klassen sollten EnumConverter diese Anforderung ebenfalls beachten.
Eingeführt in Version
.NET 9 Preview 7
Typ des Breaking Changes
Diese Änderung ist eine Verhaltensänderung.
Grund für die Änderung
Es ist logisch, die Anforderung zu erzwingen, die EnumConverter nur zum Konvertieren in und von enum
Typen verwendet werden soll. Es war wahrscheinlich eine Aufsicht, dass diese Anforderung nicht früher hinzugefügt wurde.
Der wichtigste Faktor für diese Änderung war jedoch für Kürzungszwecke. Das Kürzen schneidet enum
keine Typen ab, verwendet jedoch EnumConverter für Typen, die für enum
einen enum
Typ erforderlich sindDynamicallyAccessedMembersAttribute. Dies bedeutet, dass durch die Verwendung EnumConverter
unnötige Kürzungswarnungen generiert werden. Eine kürzlich vorgenommene Änderung hat die Anmerkungsanforderung entfernt. Ein Teil des Grunds für diese Änderung bestand darin, zu erzwingen, dass EnumConverter
nur mit enums
.
Empfohlene Maßnahme
Es gibt keine einfache Problemumgehung, wenn eine EnumConverter zum Konvertieren in und von einem Nicht-Typenum
verwendet wird.
Betroffene APIs
- EnumConverter(Type)-Konstruktor