我正在尝试编写一个可以采用三个参数的函数:SqlDataReader、DataGridView 和 List。
我想获取 SqlDataReader 的内容并创建一个对象列表,然后将其绑定到 DataGridView。
借助另一个 Stack Overflow 用户的一些建议,我得出以下结论:
public void FillArrayList<T>(DataGridView grid, SqlDataReader reader, List<T> list)
{
//Fill the list with the contents of the reader
while (reader.Read())
{
Object obj = new Object();
Type type = typeof(T);
FieldInfo[] fields = type.GetFields(); // Get the fields of the assembly
int i = 0;
foreach(var field in fields)
{
field.SetValue(obj, reader[i]); // set the fields of T to the reader's value
i++;
}
list.Add((T)obj);
}
grid.DataSource = list;
}
当我运行代码时,将对象转换为类型 T 时出现错误:
无法将“System.Object”类型的对象转换为“TestHarness.Organisation”类型。
我的印象是 Object 可以存储任何东西。谁能告诉我为什么这个演员不能表演?
谢谢,
安迪