我有一个实现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
}
}
答案 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();