2009-06-24 15 views
0

Ich weiß, dass Sie nicht nicht IEnumerable-basierten Objekt in eine ASP.NET MVC SelectList-Helper-Methode übergeben können (wie erwartet eine IEnumerable für den ersten Parameter). Ich habe eine generische Liste List<OurCustomType> und OurCustomType hat Eigenschaften für Dinge wie Wert, etc. für das Dropdown.Übergeben generische Liste in SelectLista

Also, wenn ich ein generisches Objekt nicht zu einem IEnumerable übergeben kann, welche anderen Optionen habe ich hier, wenn ich immer noch den SelectList Helfer verwenden möchte?

Antwort

1

IEnumerable<T> erweitert IEnumerable, so List<T> implementiert bereits IEnumerable. Es sollte in Ordnung sein. Zum Beispiel:

List<int> genericList = new List<int>(); 
IEnumerable<int> genericSequence = genericList; 
IEnumerable weakSequence = genericSequence; 
0

Wenn Sie einen Blick auf die Definition von IEnumerable<T> im Rahmen docs haben, werden Sie sehen, dass es die nicht-generische IEnumerable erbt ab. Als Liste <T> erbt IEnumerable <T> und damit IEnumerable, können Sie es problemlos in Ihre SelectList übergeben.

Dies wurde genau für dieses Problem getan - Rückwärtskompatibilität mit bestehenden nicht-generischen Code, obwohl es macht es ein bisschen ärgerlich bei der Implementierung Ihrer eigenen IEnumerable, wie Sie auch die nicht-generische Version bereitstellen müssen. Danke den netten Leuten im BCL-Team dafür: D

Verwandte Themen