Ich habe ein interessantes Problem, bei dem eine Klasse von einer Klasse erbt, die IEnumerable implementiert, aber ich möchte auch, dass die Klasse IEnumerable für einen anderen Typ implementiert. Alles funktioniert mit Ausnahme von IEnumerable-Erweiterungsmethoden, was bedeutet, dass ich standardmäßig keine LINQ-Objekte für Objekte erstellen kann, ohne immer zuerst zu casten. Hat jemand irgendwelche Ideen neben ständig Casting?
%Vor% Eigentlich können Sie, aber Sie können nicht den Vorteil der generischen Typen-Inferenz nutzen, weil Ihre Klasse zwei IEnumerable<T>
von zwei verschiedenen Typen implementiert und der Compiler nicht wissen kann, welchen Typ Sie verwenden möchten.
Sie können direkt angeben, wie:
%Vor%Implementieren IEnumerable Multiple Time Confuses Compiler, der IEnumerable & lt; & gt; es sollte in Betracht ziehen.
%Vor%public new IEnumerator GetEnumerator ()
Das new
-Schlüsselwort in dieser Zeile blendet die GetEnumerator () -Methode aus, die von der Vehicle-Klasse geerbt wurde. Ich bin mir nicht sicher, ob das funktioniert, aber probieren Sie stattdessen eine explizite Schnittstellenimplementierung .
Tags und Links c# ienumerable linq-to-objects