¿Cómo puedo downcast una lista de objetos para que cada uno de los objetos en la lista se downcast a un objeto de una clase derivada?Downcasting una lista de objetos en C#
Este es el escenario.
que tienen una clase base con un List
de elementos de base, y dos clases que heredan de ella:
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 {}
La idea es no tener que duplicar el código necesario para construir la lista de elementos. El BaseItem
tiene todas las cosas básicas que necesito, y siempre puedo enviar BaseItem
a uno de los artículos derivados.
El problema surge cuando tengo una lista de ellos. El List
de BaseItem
se declara en el BaseClass
porque todas las clases derivadas deben tenerlo. Pero al acceder a él en tiempo de ejecución, parece que no puedo bajar a la clase derivada.
Probablemente debería estar buscando en a las interfaces. –
O las palabras clave AS y IS. – ThatBlairGuy
Polimorfismo estándar de pantano: métodos virtuales en la clase base, que anula en las clases derivadas. No se requiere downcasting porque utiliza el tipo de clase base para llamar a los métodos anulados. – Polyfun