我正在从数据库中读取并尝试将当前记录存储在我的对象的实例中。如何在列表中添加新项?
private void Load_data<T>(AseDataReader reader, List<T> table)
{
while (reader.Read())
{
table.Add(new myclass1
{
id_number= SafeGetInt(reader, 0),
state = SafeGetString(reader, 1)
});
}
}
“table.Add(new myclass1”是编译器的问题。更具体地说,“myclass1”。我是泛型的新手。我怎么能这样做?有可能吗?
更新:好的,所以当我到达我的代码中我知道它需要什么类型时,我正在调用上面的方法。我正在使用一个接受所有列表类型的方法 - 因此我不需要有12个重载方法来执行相同的操作。
答案 0 :(得分:3)
您要么不需要使用泛型
private void Load_data(AseDataReader reader, List<myclass1> table)
{
while (reader.Read())
{
table.Add(new myclass1
{
id_number= SafeGetInt(reader, 0),
state = SafeGetString(reader, 1)
});
}
}
或者您需要一种方法来告诉您的方法如何创建T
private void Load_data<T>(
AseDataReader reader,
List<T> table,
Func<AseDataReader, T> create)
{
while (reader.Read())
{
table.Add(create(reader));
}
}
并像这样称呼它
List<myclass1> table = new List<myclass1>();
Load_data(
reader,
table,
r => new myclass1
{
id_number= SafeGetInt(reader, 0),
state = SafeGetString(reader, 1)
});