如何向下轉換對象列表,以便將列表中的每個對象向下轉換爲派生類的對象?在C中向下轉換對象列表#
這是場景。
我有一個基類的基礎項目一List
,以及兩班從它繼承:
public class BaseClass
{
public List<BaseItem> items;
protected BaseClass()
{
// some code to build list of items
}
}
public class DerivedClass : BaseClass
{
public DerivedClass : base() {}
}
public class AnotherDerivedClass : BaseClass
{
public AnotherDerivedClass : base() {}
}
public class BaseItem {}
public class DerivedItem : BaseItem {}
public class AnotherDerivedItem : BaseItem {}
的想法是不會有重複建設的項目列表中所需的代碼。 BaseItem
具有我需要的所有基本功能,並且我總是可以將BaseItem
降頻爲派生項目之一。
問題出現在我列出它們的時候。 BaseItem
的List
在BaseClass
中聲明,因爲所有的派生類必須擁有它。但是在運行時訪問它時,我似乎無法向派生類下注。
或許你也應該仔細研究的接口。 – 2011-03-08 14:59:45
或AS和IS關鍵字。 – ThatBlairGuy 2011-03-08 15:03:04
或bog標準多態:基類中的虛方法,它在派生類中重寫。不需要向下轉換,因爲您使用基類類型來調用重寫的方法。 – Polyfun 2011-03-08 15:14:00