Byłbym pewien, że to pytanie dotyczy czegoś, co zostało poruszone w poprzednim pytaniu, ale nie mogłem go znaleźć.Konwertowanie listy typów bazowych na listę dziedziczonych typów
Istnieje metoda w klasie C#, która jako parametr przyjmuje ogólną listę klasy bazowej. Muszę przekazać listę odziedziczonej klasy i nie wiem dokładnie, jak to zrobić. Otrzymuję błąd w moich próbach. Poniżej znajduje się przykładowy kod zilustrowany:
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
Uwaga: Oto moja ostatnia metoda robocza jako odniesienie. Mam jeszcze lepsze rozwiązanie mojego problemu, ale technicznie nie była to odpowiedź na to pytanie, ponieważ moje pytanie zostało sformułowane niepoprawnie.
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;
}
To ta sama odpowiedź, którą ci dałem ... –
I technicznie jest to odpowiedź na to, co pierwotnie zadałeś! :) –