2009-06-24 96 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