我知道你不能将非IEnumerable对象传入ASP.NET MVC SelectList帮助器方法(因为它期望第一个参数的IEnumerable
)。我有一个通用列表List<OurCustomType>
,而OurCustomType具有下拉值等值等属性。
因此,如果我不能将通用对象传递给IEnumerable,如果我仍然想使用SelectList助手,我还有其他选项吗?
答案 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