2009-06-24 59 views
0

我知道你不能在非基於IEnumerable的對象傳遞到ASP.NET MVC的SelectList helper方法(它預計在第一個參數的IEnumerable)。我有一個通用列表List<OurCustomType>,OurCustomType具有屬性,如下拉列表的值等。傳遞泛型列表到SelectLista

所以,如果我不能在一個通用對象傳遞給一個IEnumerable,我有什麼其他選擇在這裏如果我仍然想使用選擇列表的幫手?

回答

1

IEnumerable<T> extend IEnumerable,所以List<T>已經實現IEnumerable。應該沒問題。例如:

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

如果你看一下在框架文檔中的IEnumerable<T>定義你會看到,它繼承出不一般的IEnumerable。由於名單<牛逼>繼承了IEnumerable <牛逼>,因此IEnumerable的,你就可以將它傳遞到您的SelectList沒有問題。

這樣做的目的是爲了解決這個問題 - 向後兼容現有的非泛型代碼,儘管它在實現自己的IEnumerable時確實讓人討厭,因爲您必須提供非泛型版本。感謝可愛的人的BCL團隊爲:d