データ ソースから実際の汎用リストを作成する前に、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>
が、この「最初の行」のものを追加したいと思います。
これについて助けてくれてありがとう。