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.
Rekommenderad åtgärd
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
.