Estoy seguro de que esta pregunta aborda algo que se habría planteado en una pregunta anterior, pero no pude encontrarla.Conversión de una lista de tipo base en una lista de tipo heredado
Hay un método en una clase C# que toma como parámetro una lista genérica de una clase base. Necesito pasar una lista de una clase heredada y no sé exactamente cómo hacer esto. Estoy recibiendo un error en mis intentos. A continuación se muestra el código de muestra para ilustrar esto:
public class A
{
public static void MethodC(List<A>)
{
// Do Something here with the list
}
}
public Class B : A
{
// B inherits from A, A is the Base Class
}
// Code utilizing the above method
List<B> listOfB = new List<B>();
A.MethodC((List<A>) listOfB); // Error: this does not work
A.MethodC(listOfB.ToList<typeof(A)>()); // Error: this does not work
A.MethodC(listOfB.ConvertAll<A>(typeof(A))); // Error: this does not work
// how can I accomplish this? It should be possible I would think
Nota: Aquí está mi Método de trabajo final como referencia. Obtuve una solución aún mejor para mi problema, pero técnicamente no fue una respuesta a la pregunta, ya que mi pregunta fue formulada de manera incorrecta.
public static DataTable
ObjectCollectionToDataTable<GLIST>
(List<GLIST> ObjectCollection) where GLIST
: BaseBusinessObject
{
DataTable ret = null;
if (ObjectCollection != null)
{
foreach (var b in ObjectCollection)
{
DataTable dt = b.ToDataTable();
if (ret == null)
ret = dt.Clone();
if (dt.Rows.Count > 0)
ret.Rows.Add(dt.Rows[0].ItemArray);
}
}
return ret;
}
Esa es la misma respuesta que te di ... –
¡Y técnicamente es la respuesta a lo que originalmente pediste, también! :) –