我有一个在运行时已知类型的对象,我从数据库中读取并反序列化这个对象。它可以工作。现在我想将它添加到某个列表中:
private static List<T> generateList<T>()
{
List<T> lst = new List<T>();
return lst;
}
private void readObjects(System.Type objType)
{
var methodInfo = typeof(My.Serializator).GetMethod("DeserializeDb");
var genericMethod = methodInfo.MakeGenericMethod(objType1);
List<curType> currentList= generateList<curType>();
// ...read stream from database and convert it to object
while (_rs.Read())
{
var _objItem = genericMethod.Invoke(null, new[] { _streamedData });
currentList.Add(_objItem);
}
}
无法工作。错误是:
curType是一个变量,但被使用如同类型。
如果我把列表更改为:
List<object> currentList = new List<object>();
它可以工作。但我能否使用泛型(T)代替对象类型来实现这一点?
curType
是类型还是变量或其他内容,因为您没有显示它。如果curType
是System.Type
类型的表达式,那么它是一个变量,而不是“类型”。 - Jeppe Stig NielsencurType
,但它没有在任何地方声明。你是不是想用objType
?如果是,请编辑问题。 - Peter BreadObjects
泛型化?既然它是某种反序列化,假定调用者应该在编译时知道正确的类型?为什么你实际上想使用运行时反射? - Luaan