Freigeben über


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.

Es gibt keine einfache Problemumgehung, wenn eine EnumConverter zum Konvertieren in und von einem Nicht-Typenum verwendet wird.

Betroffene APIs