我正在使用 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
。就像有一个通用方法而不是像上面那样的许多方法。
请详细说明这个问题。是否可以减少方法的数量?
提前致谢。
答案 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)