通用列表替换

时间:2012-05-23 07:17:44

标签: c# list generics

所以我正在尝试使用新的list<>在对象中设置list<>字段。 这个列表可以是任何类型,因此使用泛型。

我收到编译时错误,'无法将System.Collections.Generic.List<object>表达式转换为System.Collections.Generic.IEnumerable<T>类型' 反正有没有让这项工作?

private void MyGenericMethod<T>(FieldInfo field)
{   
    field.SetValue(obj, new List<T>(newObjectList));    // new List<T> allObjects.ConvertAll<IEnumerable>) ???
}

1 个答案:

答案 0 :(得分:2)

我和Damien在一起。问题必须是newObjectList,因为将泛型类型的List传递给SetValue没有问题,因为它接受两个类型为Object的参数

public void SetValue(
Object obj,
Object value
)

如果你创建一个新的List并用另一个集合填充它,它会要求一个IEnumerable,所以你应该尝试像

这样的东西
field.SetValue(obj, new List<T>(newObjectList as IEnumerable<T>));

至少,在编译时,它不会抛出任何错误