我有一個類,我用來枚舉我的數據庫中的列表。數據庫中的所有表都有自己的具有自己屬性的類,它們都來自DatabaseTableRow。鑄造IEnumerable <Derived> IEnumerable <BaseClass>
public class DatabaseLinkRowsEnumerator<T> : IEnumerator<T>, IEnumerable<T> where T : DatabaseTableRow
我有一個用戶類,它派生自派生自DatabaseTableRow的Page。然後我有一個屬性返回一個DatabaseLinkRowsEnumerator,一個用戶列表。
我也有一個UI函數,顯示水平列表中的任何頁面的列表,包括圖像,名稱和鏈接。
protected string GetVerticalListModuleHtml(IEnumerable<Page> pages)
現在我想要做的就是將DatabaseLinkRowsEnumerator的值傳遞給此函數。用戶從Page派生,DatabaseLinkRowsEnumerator是一個IEnumerator。即使在我嘗試投射時,出現以下錯誤:
Unable to cast object of type 'Database.DatabaseLinkRowsEnumerator`1[Database.User]' to type 'System.Collections.Generic.IEnumerable`1[Database.Page]'.
我正在使用ASP.NET 2.0。有沒有人有任何想法如何轉換/轉換而不做每個副本?
如果繼承設置正確,但在OP的帖子中,我確實沒有看到DatabaseTableRow和Page之間的關係。 – 2011-04-13 20:02:25
@Justin,OP說,Page派生自DatabaseTableRow – 2011-04-13 20:04:35
雖然我在這裏稍微有一點困惑,但是你會把這個方法放在哪裏? – Connell 2011-04-13 20:17:35