Je serais certain que cette question aborde quelque chose qui aurait été soulevé dans une question précédente, mais je n'ai pas réussi à la trouver.Conversion d'une liste de type de base en une liste de type hérité
Il existe une méthode dans une classe C# qui prend en paramètre une liste générique d'une classe de base. J'ai besoin de passer une liste d'une classe héritée et je ne sais pas exactement comment faire cela. Je reçois une erreur dans mes tentatives. Voici un exemple de code pour illustrer ceci:
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
Remarque: Voici ma méthode de travail finale comme référence. J'ai trouvé une solution encore meilleure à mon problème, mais techniquement ce n'était pas une réponse à la question, puisque ma question a été formulée de façon impropre.
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;
}
C'est la même réponse que je vous ai donnée ... –
Et c'est techniquement la réponse à ce que vous avez demandé à l'origine, aussi bien! :) –