我想上傳一個作爲對象(這是IEnumerable類型的對象的upcast)傳遞給IEnumerable的參數,其中Foo實現IFoo。如果將IEnumerable類型爲<Foo>的對象上傳到IEnumerable <IFoo>(如果作爲對象傳遞給該函數)?
這是我想要做的一個例子,但它不起作用。
public void F(object o)
{
//I know the object o is of type IEnumerable<Foo> where Foo implements IFoo
IEnumerable<IFoo> ifoos = (IEnumerable<IFoo>) o);
}
是否有解決方法?我不想讓函數F美孚具體,但我不能讓它的內容投射到界面,除非我做的:
IEnumerable<IFoo> ifoos = (IEnumerable<Foo>) o).Select(f => (IFoo) f);
感謝
朱塞佩
有關.NET 4協方差/逆變的更多信息:http://msdn.microsoft.com/en-us/library/dd233054%28VS.100%29.aspx及底部表格中的相關主題。 – 2009-10-07 11:18:42
或者通過深入閱讀C#的第二版,並閱讀第13章:)(http://manning.com/skeet2) – 2009-10-07 11:19:18
難以置信的快速回復,點擊謝謝! – 2009-10-07 11:29:58