Sdílet prostřednictvím


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.

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í: