Freigeben über


Neue Überladungen der System.Linq.Queryable-Methode

Als Teil der in https://github.com/dotnet/runtime/pull/47231 implementierten neuen Funktionen wurden zusätzliche öffentliche Methodenüberladungen zu System.Linq.Queryable hinzugefügt. Wenn Ihr Reflexionscode bei der Suche nach Methoden nicht ausreichend robust ist, können diese Ergänzungen Ihre Abfrageanbieterimplementierungen beschädigen.

Änderungsbeschreibung

In .NET 6 wurden den im Abschnitt Betroffene APIs aufgeführten Methoden neue Überladungen hinzugefügt. Reflexionscode, wie z. B. der im folgenden Beispiel gezeigte, kann durch diese Ergänzungen beschädigt werden:

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

Dieser Reflexionscode löst jetzt eine InvalidOperationException mit einer ähnlichen Meldung wie Sequenz enthält mehr als ein Element aus.

Eingeführt in Version

.NET 6

Grund für die Änderung

Die neuen Überladungen wurden hinzugefügt, um die LINQ Queryable-API zu erweitern.

Wenn Sie Autor von Abfrageanbieterbibliotheken sind, stellen Sie sicher, dass Ihr Reflexionscode gegenüber Hinzufügungen von Methodenüberladungen robust ist. Verwenden Sie beispielsweise eine Type.GetMethod-Überladung, die die Parametertypen der Methode explizit akzeptiert.

Betroffene APIs

Neue Überladungen wurden für die folgenden Queryable-Erweiterungsmethoden hinzugefügt: