我有一些类和这些类的一些对象列表。其中几个类的示例:
public class RipsAC
{
public string NumFactura { get; set; }
public string CodigoPrestador { get; set; }
public string TipoIdUsuario { get; set; }
public string NumIdUsuario { get; set; }
public DateTime FechaConsulta { get; set; }
}
public class RipsAH
{
public string DxComplicacion { get; set; }
public int EstadoSalida { get; set; }
public string DxCausaBasicaMuerte { get; set; }
public DateTime FechaEgresoInstitucion { get; set; }
public TimeSpan HoraEgresoInstitucion { get; set; }
}
我从这些类中填写对象列表。
List<RipsAC> listaRipsAc = new List<RipsAC>();
List<RipsAH> listaRipsAh = new List<RipsAH>();
现在的问题是我希望能够使用参数将这些列表发送到常用方法。但我不知道我应该在方法中添加什么类型的参数。
public void ImprimirConsolidados(/*lista_Imprimir*/)
{
string archivoRipsUs = @"C:\TMP\Rips\US_" +
DateTime.Now.ToString("ddMMyyyy_hhmm") + ".csv";
if (!Directory.Exists(@"C:\TMP\Rips"))
{
Directory.CreateDirectory(@"C:\TMP\Rips");
}
using (var fileWriter = new StreamWriter(File.OpenWrite(archivoRipsUs), Encoding.UTF8))
using (var csvWriter = new CsvWriter(fileWriter))
{
csvWriter.WriteRecords(lista_Imprimir);
}
}
我可以将这些列表分组到某个容器中并能够将它们作为单个参数发送吗?
定义它接收列表及其对象类型:
这样您就可以使用之前创建的列表调用该方法:
您还可以定义接收通用列表类型:
根据您的问题更新,您可以通过以下方式将列表转换为通用列表
.Cast<Object>().ToList()
任何一个
你的方法是:
答案是肯定的,你只需要通过在方法中接收一个泛型类型来做一些小的改变
ImprimirConsolidados<T>(List<T> lista_Imprimir)
,使它看起来像这样:更新
值得一提的是,现在调用方法如下:
或者在她的情况下
转换(强制转换)的类型(如果可以)。能够保存任何类型的对象。
您将数据保存到 csv 文件的方法是
由于该列表仅用于使用以下语句将其写入 CSV 文件:
...并且由于它
WriteRecords()
接受类型参数System.Collections.IEnumerable
(我从您的上一个问题中识别出CsvHelper库的使用),因此在这种情况下,您可以使用相同的类型作为您的方法的参数:这样做,您可以将列表传递给方法而无需任何强制转换: