私はfilehelpersクラスビルダーを使用しようとしていますが、私はちょっとそれをどうするのか混乱しています。ダイナミッククラスにキャストする方法は?
var cb = new DelimitedClassBuilder("temp", ",") { IgnoreFirstLines = 0, IgnoreEmptyLines = true, Delimiter = "," };
var sr = new StreamReader(stream);
var headerArray = sr.ReadLine().Split(',');
foreach (var header in headerArray)
{
var fieldName = header.Replace("\"", "").Replace(" ", "");
cb.AddField(fieldName, typeof(string));
}
var engine = new FileHelperEngine(cb.CreateRecordClass());
var result = engine.ReadStream(sr);
それは私がその後、私が後で意志のヘッダーが含まれているものを、ストリームの最初の行を経る「その後、className」のおよび 『最初のパラメータの区切り文字』
//
// Summary:
// Creates a new DelimitedClassBuilder.
//
// Parameters:
// className:
// The valid class name.
//
// delimiter:
// The delimiter for that class.
public DelimitedClassBuilder(string className, string delimiter);
だとしてDelimitedClassBuilderがでとりますこの「クラス」のフィールド名として使用します。
最後の行は、私は、彼らがクラス「TEMP」であることの内部を見る。
。[]の情報のすべての残りを読み込み、オブジェクト配列として返しますしかし、実際にクラス「temp」にどのように実際にキャストしているのか分かりません。今はデータをどうやって入手するのか分かりません。
結果[0]。フィールド名としてのSomeFieldNameは実行ごとに変わる可能性があります。だから、これは私が索引などでそれを得るような何かをしなければならない場合、最初のクラスでなぜクラスを作るのか不思議に思う。
あなたが今見ているとおり、私は非常に混乱しています。
キャストを使用すると、コンパイラが推測できないことをコンパイル時の知識があることを意味します。不明なものにキャストする必要がある場合は、インターフェイスまたは継承を使用して共通ロジックを統一するようにデザインを変更する必要があります。 – paislee
どの.NET Frameworkのバージョンを使用していますか? –
4.0(必要に応じてダイナミックを使用できます)私はそれがクラスを作るという事実だけではまだ混乱していますが、私はこのランタイム生成クラスをどうするべきか理解していません。 – chobo2