CSVHelper Как не жестко кодировать индексы

#c# #csvhelper

Вопрос:

У меня есть следующий код:

 public static void WriteRecords(string fileSpecification, string[] headerRow, Type classMapType, int[] indexes, IEnumerablelt;objectgt; records) {  using (StreamWriter streamWriter = new StreamWriter(fileSpecification))  using (CsvWriter csvWriter = new CsvWriter(streamWriter, noHeaderConfiguration))  {  csvWriter.Context.RegisterClassMap(classMapType); // How do I pass in the indexes without hardcoding  WriteHeader(headerRow, csvWriter);  csvWriter.NextRecord();  csvWriter.WriteRecords(records);  } } // Edit One of the maps, does not mean only one I am calling.  public sealed class TimeZone_StartDate_Value_isGood_Description_FormatModelMap : ClassMaplt;TimeZone_StartDate_Value_isGood_Description_FormatModelgt;  {    public TimeZone_StartDate_Value_isGood_Description_FormatModelMap(int[] indexes) {    Map(m =gt; m.TimeZone).Index(indexes[0]);  Map(m =gt; m.StartDate).Index(indexes[1]);  Map(m =gt; m.Value).Index(indexes[2]);  Map(m =gt; m.IsGoodString).Index(indexes[3]);  Map(m =gt; m.Description).Index(indexes[4]);   } } // Edit 2 WriteHeader Method, asked to be included. Write header row for csv  private static void WriteHeader(string[] headerRow, CsvWriter csvWriter) {  for (int i = 0; i lt; headerRow.Length; i  )  {  csvWriter.WriteField(headerRow[i]);  } }  

Я хочу передать индексы int[] на карту. Карта определяется типом параметра classMapType. Карта классов( не включена здесь) имеет конструктор, который принимает int[]. Как этого достичь?

Я попробовал Активатор.CreateInstance (), но это возвращает объект.

Спасибо, что уделили мне время.

ПРАВКА: я включил одну из карт классов, это не значит, что она называется единственной.

Я пытался использовать .GetType (), но возвращает ошибку, потому что нет ctor с нулевыми параметрами. Попытался найти другой метод, но не смог.

Комментарии:

1. Я думаю, что нам нужно больше информации/кода, чтобы помочь вам здесь. WriteHeader , определение вашей карты классов, что indexes представляет собой, что вы ожидаете получить на выходе?

2. Я отредактировал вопрос. Я надеюсь, что это поможет. Пожалуйста, дайте мне знать, если этого недостаточно. Спасибо!

Ответ №1:

 csvWriter.Context.RegisterClassMap(new MyClassMap(indexes));  

Комментарии:

1. Спасибо! Укажите мне путь, как продолжить этот проект.