Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

C# How to convert an object with IList to IList<object>?

Tags:

c#

I have an object which implements IList interface, I want to cast it to IList<object> or List<object>, I tried

IList<object> a=(IList<object>)b;
List<object> a=(IList<object>)b;
IList<object> a=(List<object>)b;
List<object> a=(List<object>)b;

These are not working. Please help, thanks. To clarify:

b is an object pass as parameter from outside. It implements IList interface. For example,

public class a
{
  string name;
  List<a> names;
}
public void func(object item)
{
  object dataLeaves = data.GetType().GetProperty("names").GetValue(dataInput, null);
  if (dataLeaves != null && dataLeaves.GetType().GetInterfaces().Any(t =>t.IsGenericType && t.GetGenericTypeDefinition() == typeof(IList<>)))
  {
    List<object> a=(List<object>) dataLeaves; //Need to convert the dataLeaves to list or IList
  }
}
like image 939
Lance H Avatar asked Nov 30 '22 22:11

Lance H


2 Answers

You can't convert the existing object to an IList<object> if it doesn't implement that interface, but you can build a new List<object> easily using LINQ:

List<object> = b.Cast<object>().ToList();
like image 171
Jon Skeet Avatar answered Dec 05 '22 10:12

Jon Skeet


Found the answer:

IEnumerable<object> a = dataLeaves as IEnumerable<object>;
like image 22
Lance H Avatar answered Dec 05 '22 09:12

Lance H