C#如何将具有IList的对象转换为IList <object>?</object>

时间:2013-02-07 19:52:12

标签: c#

我有一个实现IList接口的对象,我想把它转换为IList<object>或者 List<object>, 我试过了

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

这些都不起作用。请帮忙,谢谢。 澄清:

b是从外部作为参数传递的对象。它实现了IList接口。例如,

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
  }
}

3 个答案:

答案 0 :(得分:15)

如果现有对象未实现该接口,则无法将其转换为IList<object>,但您可以构建 new {{1很容易使用LINQ:

List<object>

答案 1 :(得分:2)

找到答案:

IEnumerable<object> a = dataLeaves as IEnumerable<object>;

答案 2 :(得分:0)

IList只是不是 IList<object>。对象实际上不太可能实现两个接口,因此转换不会成功。您需要创建一个实现IList<object>的新列表对象:

IList<object> a= b.OfType<object>.ToList();