所以我正在尝试使用新的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>) ???
}
答案 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>));
至少,在编译时,它不会抛出任何错误