Dela via


Metodbyggare genererar parametrar med HasDefaultValue inställt på false

System.Reflection.Emit.ConstructorBuilder och System.Reflection.Emit.MethodBuilder generera nu metodparametrar som, när de återspeglas på, har ParameterInfo.HasDefaultValue angetts till false.

Tidigare beteende

ConstructorBuilder Tidigare och MethodBuilder genererade IL för metodparametrar där parametrarna HasDefaultValue angavs till true.

Nytt beteende

Från och med .NET 8 ConstructorBuilder och MethodBuilder generera IL för metodparametrar där parametrarna HasDefaultValue är inställda på false, vilket är det förväntade värdet.

Version introducerad

Förhandsversion 5 av .NET 8

Typ av icke-bakåtkompatibel ändring

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

Orsak till ändringen

Det tidigare beteendet var felaktigt eftersom inga standardparametervärden angavs när metoden eller konstruktorn definierades.

Om du använder TypeBuilder.DefineConstructor eller TypeBuilder.DefineMethodkontrollerar du att konsumenter av de genererade typernas metoder inte förlitar sig på att ParameterInfo.HasDefaultValue egenskapen är true.

Berörda API:er