Ich würde sicher sein, dass diese Frage etwas anspricht, das in einer vorherigen Frage aufgeworfen worden wäre, aber ich konnte es nicht finden.Konvertieren einer Liste von Basistyp in eine Liste von vererbten Typ
Es gibt eine Methode in einer C# -Klasse, die als Parameter eine generische Liste einer Basisklasse verwendet. Ich muss eine Liste einer geerbten Klasse übergeben und weiß nicht genau, wie das geht. Ich bekomme einen Fehler bei meinen Versuchen. Unten ist ein Beispielcode, um dies zu illustrieren:
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
Hinweis: Hier ist meine letzte Arbeitsmethode als Referenz. Ich habe eine noch bessere Lösung für mein Problem gefunden, aber technisch gesehen war es keine Antwort auf die Frage, da meine Frage improvisiert formuliert wurde.
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;
}
Das ist die gleiche Antwort, die ich Ihnen gab ... –
Und es ist technisch die Antwort auf das, was Sie ursprünglich gefragt, auch! :) –