2011-04-09 15 views

回答

3

爲什麼不乾脆用

IList<Items> GetItems; 
IList<IItems> items = GetItems().Cast<IItems>().ToList(); 
+0

是的,爲什麼不呢!唯一的原因是我沒有想到這一點。 TX – Arjang 2011-04-10 21:25:24

0

從技術上講,下面的工作,但我不認爲這是你在尋找什麼......

IList<IItems> items = GetItems().ToArray() as IList<IItems>; 
2

對於此爲你工作重新思考,我相信IList必須被宣佈爲協變,而不是列表中的項目。而IList不支持協方差。該被更新以支持協方差的唯一.NET接口是:

  • IEnumerable的(T是協變)
  • IEnumerator的(T是協變)
  • IQueryable的(T是協變)
  • IGrouping(TKEY的和TElement是協變)
  • 的IComparer(T是逆變)
  • 的IEqualityComparer(T是逆變)
  • IComparable的(T是逆變的)

這從http://blogs.msdn.com/b/csharpfaq/archive/2010/02/16/covariance-and-contravariance-faq.aspx

相關問題