我知道你不能在非基于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