Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
EnumConverter is a type converter that converts to and from an enum
type. EnumConverter now validates that the type to be registered is of an enum
type.
Previous behavior
Previously, the type to be registered was not validated to be an enum
type.
New behavior
Starting in .NET 9, EnumConverter throws an ArgumentException if the type to be converted is not an enum
type. Any derived classes of EnumConverter should also respect this requirement.
Version introduced
.NET 9 Preview 7
Type of breaking change
This change is a behavioral change.
Reason for change
It is logical to enforce the requirement that EnumConverter be used to convert to and from enum
types only. It was likely an oversight that this requirement wasn't added earlier.
However, the primary driving factor for this change was for trimming purposes. Trimming doesn't trim enum
types, but using EnumConverter for enum
types required DynamicallyAccessedMembersAttribute annotation for an enum
type. This means that using EnumConverter
generates unnecessary trim warnings. A recent change removed the annotation requirement. Part of the reason for that change was to enforce that EnumConverter
only be used with enums
.
Recommended action
There is no easy workaround if an EnumConverter is used to convert to and from a non-enum
type.
Affected APIs
- EnumConverter(Type) constructor