Přetížení nové metody System.Linq.Queryable
Další přetížení veřejné metody byly přidány jako System.Linq.Queryable součást nových funkcí implementovaných v https://github.com/dotnet/runtime/pull/47231. Pokud kód reflexe není při vyhledávání metod dostatečně robustní, můžou tyto doplňky narušit implementace zprostředkovatele dotazů.
Změna popisu
V .NET 6 byly do metod uvedených v části Ovlivněná rozhraní API přidána nová přetížení. Reflexe kódu, jako je například kód zobrazený v následujícím příkladu, může být v důsledku těchto sčítání zalomení:
typeof(System.Linq.Queryable)
.GetMethods(BindingFlags.Public | BindingFlags.Static)
.Where(m => m.Name == "ElementAt")
.Single();
Tento kód reflexe teď vyvolá InvalidOperationException zprávu podobnou této: Sequence obsahuje více než jeden prvek.
Zavedená verze
.NET 6
Důvod změny
Nová přetížení byla přidána pro rozšíření rozhraní LINQ Queryable
API.
Doporučená akce
Pokud jste autorem knihovny poskytovatele dotazů, ujistěte se, že kód reflexe je odolný proti přidávání přetížení metod. Použijte Type.GetMethod například přetížení, které explicitně přijímá typy parametrů metody.
Ovlivněná rozhraní API
Byla přidána nová přetížení pro následující Queryable metody rozšíření: