Построитель методов создает параметры с параметром HasDefaultValue, равным false

System.Reflection.Emit.ConstructorBuilder и System.Reflection.Emit.MethodBuilder теперь создают параметры метода, для которых при отражении устанавливается ParameterInfo.HasDefaultValue в false.

Предыдущее поведение

Ранее ConstructorBuilder и MethodBuilder генерировали IL для параметров метода, где HasDefaultValue параметров было установлено на true.

Новое поведение

Начиная с .NET 8, ConstructorBuilder и MethodBuilder создают IL для параметров метода, где HasDefaultValue параметров задано значением false, ожидаемого значения.

Представленная версия

.NET 8( предварительная версия 5)

Тип разрушающего изменения

Это изменение поведения.

Причина изменения

Предыдущее поведение было неверным, так как значения параметров по умолчанию не были указаны при определении метода или конструктора.

Если используется TypeBuilder.DefineConstructor или TypeBuilder.DefineMethodубедитесь, что потребители методов созданных типов не полагаются на ParameterInfo.HasDefaultValue свойство true.

Затронутые API