如何应用泛型方法

时间:2013-08-31 17:49:00

标签: c# generics

我正在使用 FileHelper.dll list 转换为 csv 文件,它是工作得很好。

我总共有 9个列表和相应的 9个方法来处理文件转换,并且将来会增长

在这里,我只展示了3种方法。

//-----Transaction.csv
public DateTime ExportResultsToCsv(string filePath, string HeaderLine, List<RetailTransaction> retailTxnList)
   {
      engine = new FileHelperEngine(typeof(RetailTransaction)) { HeaderText = HeaderLine };
      engine.WriteFile(filePath, retailTxnList);
            return DateTime.Now;
   }

//-----ConcessionSale.csv
public DateTime ExportResultsToCsv(string filePath, string HeaderLine, List<ConcessionSale> concessionSaleList)
    {
      engine = new FileHelperEngine(typeof(ConcessionSale)) { HeaderText = HeaderLine };
      engine.WriteFile(filePath, concessionSaleList);
      return DateTime.Now;
    }

//-----MerchandiseSale.csv
public DateTime ExportResultsToCsv(string filePath, string HeaderLine, List<MerchandiseSale> merchandiseSaleList)
  {
     engine = new FileHelperEngine(typeof(MerchandiseSale)) { HeaderText = HeaderLine };
     engine.WriteFile(filePath, merchandiseSaleList);
     return DateTime.Now;
  }

谷歌搜索时,我在Generics中读到了一些概念但是我无法理解。我担心,可以在这里使用Generics。就像有一个通用方法而不是像上面那样的许多方法。

请详细说明这个问题。是否可以减少方法的数量?

提前致谢。

2 个答案:

答案 0 :(得分:3)

public DateTime ExportResultsToCsv<T>(string filePath, string HeaderLine, List<T> data)   
{
    engine = new FileHelperEngine(typeof(T)) { HeaderText = HeaderLine };
    engine.WriteFile(filePath, data);
    return DateTime.Now;   
}

有关泛型的更多信息see this article on MSDN

答案 1 :(得分:2)

这种情况下您可以使用泛型。您可以使用类型变量,通常使用T,这就是您经常看到它的原因。此变量将替换列表的类型。因此,在调用方法

时,您需要传递列表类型
public DateTime ExportResultsToCsv<T>(string filePath, string HeaderLine, List<T> SaleList)
{
 engine = new FileHelperEngine(typeof(T)) { HeaderText = HeaderLine };
 engine.WriteFile(filePath, SaleList);
 return DateTime.Now;
}

然后你可以简单地这样称呼它:

ExportResultsToCsv(filePath,Header,salesList)