3

所以我试图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>) ???
}
4

1 回答 1

2

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

public void SetValue(
Object obj,
Object value
)

如果您创建一个新列表并用另一个集合填充它,它将要求一个 IEnumerable,因此您应该尝试类似

field.SetValue(obj, new List<T>(newObjectList as IEnumerable<T>));

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

于 2012-05-23T07:54:08.113 回答