如何将对象添加到通用List <t> </t>

时间:2015-03-20 17:31:12

标签: c# generics visual-studio-2013

我正在从数据库中读取并尝试将当前记录存储在我的对象的实例中。如何在列表中添加新项?

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个重载方法来执行相同的操作。

1 个答案:

答案 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)
    });