Freigeben über


Neue Überladungen der System.Linq.Queryable-Methode

Als Teil der in System.Linq.Queryable implementierten neuen Funktionen wurden zusätzliche öffentliche Methodenüberladungen zu https://github.com/dotnet/runtime/pull/47231 hinzugefügt. Wenn Ihr Reflektionscode beim Nachschlagen von Methoden nicht ausreichend robust ist, können diese Ergänzungen Ihre Implementierungen des Abfrageanbieters stören.

Ä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 Spiegelungscode löst nun eine InvalidOperationException Nachricht mit einer ähnlichen Meldung aus: Sequence enthält mehr als ein Element.

Eingeführte Version

.NET 6

Grund für Änderung

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

Wenn Sie ein Autor einer Abfrageanbieterbibliothek sind, stellen Sie sicher, dass Ihr Reflection-Code tolerant gegenüber Erweiterungen durch Methodenüberladung 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: