Nuovi overload del metodo System.Linq.Queryable

Sono stati aggiunti altri overload di metodi pubblici a System.Linq.Queryable come parte delle nuove funzionalità implementate in https://github.com/dotnet/runtime/pull/47231. Se il codice di reflection non è sufficientemente affidabile quando si cercano metodi, queste aggiunte possono interrompere le implementazioni del provider di query.

Descrizione delle modifiche

In .NET 6 sono stati aggiunti nuovi overload ai metodi elencati nella sezione API interessate. Il codice di reflection, ad esempio quello illustrato nell'esempio seguente, può interrompersi in seguito a queste aggiunte:

typeof(System.Linq.Queryable)
    .GetMethods(BindingFlags.Public | BindingFlags.Static)
    .Where(m => m.Name == "ElementAt")
    .Single();

Questo codice di reflection genererà ora un InvalidOperationException con un messaggio simile al seguente: sequence contiene più di un elemento.

Versione introdotta

.NET 6

Motivo della modifica

I nuovi overload sono stati aggiunti per estendere l'API LINQ Queryable.

Se si è un autore della libreria del provider di query, assicurarsi che il codice di reflection sia tollerante delle aggiunte di overload del metodo. Ad esempio, usare un overload Type.GetMethod che accetta in modo esplicito i tipi di parametro del metodo.

API interessate

Sono stati aggiunti nuovi overload per i metodi di estensione Queryable seguenti: