メソッド ビルダーは、HasDefaultValue を false に設定してパラメーターを生成します
System.Reflection.Emit.ConstructorBuilder と System.Reflection.Emit.MethodBuilder は、反映されると、 ParameterInfo.HasDefaultValue を false
に設定するメソッド パラメーターを生成するようになりました。
以前の動作
以前は、パラメーターの HasDefaultValue が true
に設定されているメソッド パラメーターに対して、 ConstructorBuilder および MethodBuilder が IL を生成しました。
新しい動作
.NET 8 以降では、パラメーターの HasDefaultValue が false
(予期される値) に設定されているメソッド パラメーターに対して、ConstructorBuilder と MethodBuilder は IL を生成します。
導入されたバージョン
.NET 8 Preview 5
破壊的変更の種類
この変更は、動作変更です。
変更理由
メソッドまたはコンストラクターの定義時に既定のパラメーター値が指定されていないため、前の動作は正しくありません。
推奨される操作
TypeBuilder.DefineConstructor または TypeBuilder.DefineMethodを使用する場合は、生成された型のメソッドのコンシューマーが、ParameterInfo.HasDefaultValueプロパティが true
であることに依存していないことを確認します。
影響を受ける API
GitHub で Microsoft と共同作業する
このコンテンツのソースは GitHub にあります。そこで、issue や pull request を作成および確認することもできます。 詳細については、共同作成者ガイドを参照してください。
.NET