У меня есть несколько классов и несколько списков объектов этих классов. Пример пары таких классов:
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 из вашего предыдущего вопроса ), то в этом случае вы можете использовать тот же тип в качестве параметра для вашего метода:Делая это таким образом, вы можете передавать списки в метод без приведения: