#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. Спасибо! Укажите мне путь, как продолжить этот проект.