FileHelpersを使用して、次のコードを使用して構造が不明なCSVファイルを解析しています。
string cd = string.Format(@"[DelimitedRecord(""{0}"")]
public sealed class ImportClass {{
[FieldQuoted('{1}')]
public string[] Fields;
}}", _delimiter, _quote);
Type t = DelimitedClassBuilder.ClassFromString(cd);
var engine = new FileHelperAsyncEngine(t);
engine.BeginReadFile(filename);
object record;
while ((record = engine.ReadNext()) != null) {
}
engine.Close();
これは問題なく機能するようです。デバッガーを使用してステップスルーすると、レコードはImportClassタイプのオブジェクトであり、フィールドフィールドにはファイルのデータが正しく入力されます。
私が抱えている問題は、実際にそのデータをどのように抽出するかです。コンパイル時にそのタイプが不明であるため、レコードをImportClassにキャストできません。本当にリフレクションを使用する必要がありますか、それともこれを行うためのより簡単な方法がありますか?