Я пытаюсь использовать System.Reflection для вывода первой строки информации заголовка столбца для текстового файла csv, прежде чем я создам фактический общий список из моего источника данных.
public class DocMetaData
{
public const string SEPARATOR = "\t"; // horizontal tab is delimiter
public string Comment { get; set; }
public string DocClass { get; set; }
public string Title { get; set; }
public string Folder { get; set; }
public string File { get; set; }
}
В следующей процедуре я пытаюсь перебрать свойства определения объекта и использовать имя свойства в качестве «имени столбца» для моей первой строки моего выходного файла:
private void OutputColumnNamesAsFirstLine(StreamWriter writer)
{
StringBuilder md = new StringBuilder();
PropertyInfo[] columns;
columns = typeof(DocMetaData).GetProperties(BindingFlags.Public |
BindingFlags.Static);
foreach (var columnName in columns)
{
md.Append(columnName.Name); md.Append(DocMetaData.SEPARATOR);
}
writer.WriteLine(md.ToString());
}
Цикл foreach завершается немедленно. Кроме того, я поместил в класс постоянный разделитель, но я хочу использовать его как значение разделителя полей (а не как имя «столбца»).
Я предполагаю, что порядковое положение свойств в классе будет поддерживаться последовательно, если я смогу заставить что-то подобное работать.
Остальная часть кода, который создает List<DocMetaData>
из моего источника данных, работает, но я бы хотел добавить этот материал "первой строки".
Спасибо за помощь в этом.