Dela via


EnumConverter validerar registrerade typer som ska räknas upp

EnumConverter är en typkonverterare som konverterar till och från en enum typ. EnumConverter verifierar nu att den typ som ska registreras är av en enum typ.

Tidigare beteende

Tidigare verifierades inte den typ som ska registreras som en enum typ.

Nytt beteende

Från och med .NET 9 EnumConverter genererar en ArgumentException om typen som ska konverteras inte är en enum typ. Alla härledda klasser av EnumConverter bör också respektera detta krav.

Version introducerad

Förhandsversion 7 av .NET 9

Typ av icke-bakåtkompatibel ändring

Den här ändringen är en beteendeförändring.

Orsak till ändringen

Det är logiskt att framtvinga kravet som EnumConverter ska användas för att konvertera till och från enum endast typer. Det var sannolikt ett förbiseende att det här kravet inte lades till tidigare.

Den främsta drivkraften för den här ändringen var dock i trimningssyfte. Trimning trimmar enum inte typer, men använder EnumConverter för enum typer som krävs DynamicallyAccessedMembersAttribute anteckning för en enum typ. Det innebär att användning EnumConverter genererar onödiga trimvarningar. En nyligen genomförd ändring tog bort anteckningskravet. En del av anledningen till ändringen var att framtvinga att EnumConverter endast användas med enums.

Det finns ingen enkel lösning om en EnumConverter används för att konvertera till och från en icke-typenum .

Berörda API:er