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
.
Berörda API:er
Feedback
https://aka.ms/ContentUserFeedback.
Kommer snart: Under hela 2024 kommer vi att fasa ut GitHub-problem som feedbackmekanism för innehåll och ersätta det med ett nytt feedbacksystem. Mer information finns i:Skicka och visa feedback för