将通用列表传递给SelectLista

时间:2009-06-24 21:02:29

标签: c#

我知道你不能将非IEnumerable对象传入ASP.NET MVC SelectList帮助器方法(因为它期望第一个参数的IEnumerable)。我有一个通用列表List<OurCustomType>,而OurCustomType具有下拉值等值等属性。

因此,如果我不能将通用对象传递给IEnumerable,如果我仍然想使用SelectList助手,我还有其他选项吗?

2 个答案:

答案 0 :(得分:1)

IEnumerable<T>扩展了IEnumerable,因此List<T>已经实现了IEnumerable。应该没问题。例如:

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

答案 1 :(得分:0)

如果你看一下框架文档中IEnumerable<T>的定义,你会发现它继承了非通用的IEnumerable。如列表&lt; T&gt;继承IEnumerable&lt; T&gt;,因此IEnumerable,你将能够毫无问题地将它传递到你的SelectList。

这是针对这个问题完成的 - 与现有非通用代码的向后兼容性,虽然它确实使得在实现自己的IEnumerable时有点烦人,因为你必须提供非泛型版本。感谢BCL团队中可爱的人:D