通用列表替换

本文关键字:替换 列表 | 更新日期: 2023-09-27 18:35:14

所以我正在尝试使用新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>) ???
}

通用列表替换

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

public void SetValue(
Object obj,
Object value
)

如果你创建一个新的列表并用另一个集合填充它,它将要求一个 IEnumerable,所以你应该尝试类似的东西

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

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