在从我的数据源创建实际的通用列表之前,我正在尝试使用 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>
有效,但我想添加这个“第一行”的东西。
感谢您对此的帮助。