Новые перегрузки методов System.Linq.Queryable
В System.Linq.Queryable добавлены дополнительные перегрузки открытых методов как часть новых возможностей, реализованных в https://github.com/dotnet/runtime/pull/47231. Если код отражения недостаточно надежен при поиске методов, эти добавления могут нарушить реализации поставщика запросов.
Описание изменения
В .NET 6 были добавлены новые перегрузки к методам, перечисленным в разделе Затронутые API. В результате этих добавлений может быть нарушена работа кода отражения, как показано в следующем примере.
typeof(System.Linq.Queryable)
.GetMethods(BindingFlags.Public | BindingFlags.Static)
.Where(m => m.Name == "ElementAt")
.Single();
Этот код отражения теперь будет создавать исключение InvalidOperationException примерно с таким сообщением: Последовательность содержит более одного элемента.
Представленные версии
.NET 6
Причина изменения
Новые перегрузки были добавлены для расширения API Queryable
LINQ.
Рекомендуемое действие
Если вы создаете библиотеки для поставщика запросов, убедитесь, что ваш код отражения устойчив к добавлению перегрузок методов. Например, используйте перегрузку Type.GetMethod, которая явным образом принимает типы параметров метода.
Затронутые API
Новые перегрузки были добавлены в следующие методы расширения Queryable: