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.
Empfohlene Maßnahme
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: