オブジェクトのリストをダウンキャストして、リスト内の各オブジェクトを派生クラスのオブジェクトにダウンキャストするにはどうすればよいですか?
これがシナリオです。
の基本アイテムを持つ基本クラスと、List
それを継承する2つのクラスがあります。
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 {}
アイデアは、アイテムのリストを作成するために必要なコードを複製する必要がないことです。には必要な基本的なものがすべて揃っており、派生アイテムの1つにBaseItem
いつでもダウンキャストできます。BaseItem
それらのリストがあると問題が発生します。のList
は、すべての派生クラスに含まれている必要がBaseItem
あるため、で宣言されています。BaseClass
しかし、実行時にアクセスすると、派生クラスにダウンキャストできないようです。