I would be certain that this question addresses something that would have been brought up in a previous question, but I was unable to find it.
There is a method in a C# class that takes as a parameter a generic List of a Base Class. I need to pass a list of an inherited class and do not know exactly how to do this. I am getting an error in my attempts. Below is sample code to illustrated this:
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
Note: Here is my final working Method as a reference. I got an even better solution to my problem, but technically it wasn’t an answer to the question, since my question was phrased impropertly.
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; }
If you have linq available you can do