C# Converting List<object> to Original Type without an Explicit Cast

Viewed 4346

I'm having trouble converting a list object back to its original type without an explicit cast. My intention is to generalize methods so I could pass in different db Types such as Person or Company. I have no problem getting the values via reflection but I need to convert the actual list back to its original type List<typeT> instead of List<object> in the method I am passing it to. I am aware of the following methods:

 SomeList.ConvertAll(x => (typeT)x);
 SomeList.Cast<typeT>().ToList();

However for these methods I will have to explicitly cast typeT. I have tried the following:

formatted1.ConvertAll(x => Convert.ChangeType(x, typeT));

and

List<dynamic> newList = new List<dynamic>();
foreach (var p in SomeList)
{
   newList.Add(Convert.ChangeType(p, typeT);
}

No success thus far. Maybe I should have another game-plan for generalizing these methods altogether. right now I'm passing the lists in as follows:

public string returnJson(List<object> entity, string someString)
{
}
3 Answers
Related