나는 데이터베이스에서 목록을 통해 열거하는 데 사용하는 클래스가 있습니다. 데이터베이스의 모든 테이블은 고유 한 속성을 가진 자체 클래스를 가지고 있으며 모두 DatabaseTableRow에서 파생됩니다.캐스팅 IEnumerable <Derived> to IEnumerable <BaseClass>
public class DatabaseLinkRowsEnumerator<T> : IEnumerator<T>, IEnumerable<T> where T : DatabaseTableRow
저는 DatabaseTableRow에서 파생 된 Page에서 파생 된 User 클래스가 있습니다. 그런 다음 사용자 목록 인 DatabaseLinkRowsEnumerator를 반환하는 속성이 있습니다.
이미지, 이름 및 링크가 포함 된 가로 목록의 모든 페이지 목록을 표시하는 UI 기능도 있습니다.
protected string GetVerticalListModuleHtml(IEnumerable<Page> pages)
이제는 DatabaseLinkRowsEnumerator의 값을이 함수에 전달하고 싶습니다. User는 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 사이의 관계. –
@ Justin, OP는 DatabaseTableRow에서 Page가 파생되었다고 말했습니다. –
약간 혼란스러워집니다.이 방법을 어디에 넣을까요? – Connell