新的 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
更改原因
添加了新的重载来扩展 LINQ Queryable
API。
建议操作
如果你是查询提供程序库作者,请确保反射代码具有方法重载添加功能。 例如,使用显式接受该方法的参数类型的 Type.GetMethod 重载。
受影响的 API
为以下 Queryable 扩展方法添加了新重载: