通用列表替换
本文关键字:替换 列表 | 更新日期: 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>));
至少,在编译时,它不会抛出任何错误