konvertiert von enum zu IEnumerable

7

Können Sie mir helfen, diesen Code zu kodieren

? %Vor%

wenn bulid der Fehler ist: Der Typ 'System.Array' kann nicht implizit in 'System.Collections.Generic.IEnumerable' konvertiert werden. Eine explizite Konvertierung existiert (fehlt Ihnen ein Cast?) Bei return Enum.GetValues ​​(enumType)

    
chung pham nhu 11.11.2013, 15:11
quelle

3 Antworten

19

Das Problem liegt in Ihrer GetEnumValues -Methode, Enum.GetValues ​​ gibt ein Array nicht ein IEnumerable<T> zurück. Sie müssen es umsetzen, d. H.

%Vor%     
James 11.11.2013, 15:15
quelle
2
%Vor%     
Jakub Konecki 11.11.2013 15:15
quelle
1

Ich nehme an, dass diese Zeile der Fehler ist?:

%Vor%

Laut der Fehlermeldung vermissen Sie eine Besetzung. Haben Sie versucht, eine Besetzung hinzuzufügen?:

%Vor%

Die Methode .GetValues() für Enum gibt an Array . Und obwohl es etwas ist, über das Sie aufzählen können (es implementiert IEnumerable ), handelt es sich nicht um eine generische Enumeration (es implementiert nicht IEnumerable<T> zur Kompilierzeit, obwohl Die Dokumentation gibt an, dass sie zur Laufzeit verfügbar sein wird.).

Um ein IEnumerable als IEnumerable<T> zurückzugeben, musst du es umwandeln. Da Sammlungen nicht immer direkt kovariant sind, gibt es eine praktische .Cast<T>() -Methode, um die Sammlung zu transformieren.

    
David 11.11.2013 15:16
quelle

Tags und Links