我知道你不能在非基於IEnumerable的對象傳遞到ASP.NET MVC的SelectList helper方法(它預計在第一個參數的IEnumerable
)。我有一個通用列表List<OurCustomType>
,OurCustomType具有屬性,如下拉列表的值等。傳遞泛型列表到SelectLista
所以,如果我不能在一個通用對象傳遞給一個IEnumerable,我有什麼其他選擇在這裏如果我仍然想使用選擇列表的幫手?
我知道你不能在非基於IEnumerable的對象傳遞到ASP.NET MVC的SelectList helper方法(它預計在第一個參數的IEnumerable
)。我有一個通用列表List<OurCustomType>
,OurCustomType具有屬性,如下拉列表的值等。傳遞泛型列表到SelectLista
所以,如果我不能在一個通用對象傳遞給一個IEnumerable,我有什麼其他選擇在這裏如果我仍然想使用選擇列表的幫手?
IEnumerable<T>
extend IEnumerable
,所以List<T>
已經實現IEnumerable
。應該沒問題。例如:
List<int> genericList = new List<int>();
IEnumerable<int> genericSequence = genericList;
IEnumerable weakSequence = genericSequence;
如果你看一下在框架文檔中的IEnumerable<T>定義你會看到,它繼承出不一般的IEnumerable。由於名單<牛逼>繼承了IEnumerable <牛逼>,因此IEnumerable的,你就可以將它傳遞到您的SelectList沒有問題。
這樣做的目的是爲了解決這個問題 - 向後兼容現有的非泛型代碼,儘管它在實現自己的IEnumerable時確實讓人討厭,因爲您必須提供非泛型版本。感謝可愛的人的BCL團隊爲:d