私はFileHelperナゲットパッケージを使用してフラットファイルをカスタムDTOリストクラスに解析しています。私の開発の初期に、FixedFieldLengthを、宣言されたメンバーのリストを持つクラスファイルでハードコーディングしました。私はそのクラスを使ってfilehelperengineを構築しましたが、後でフィールド長を動的に作成し、 classBuilder今FileHelperEngineはリストの代わりにリスト<object>を返します<T>
private FixedLengthClassBuilder BuildFixedLengthClass(string mplFileType)
{
var layoutDetails = GetLayoutDetailsFromDatabase();
const string className = "My_Dynamic_Class";
var fixedLengthClassBuilder = new FixedLengthClassBuilder(className);
foreach (var column in layoutDetails)
{
dynamic dynamicColumn = column;
fixedLengthClassBuilder.AddField(dynamicColumn.FieldName,
dynamicColumn.NumberOfCharacters, dynamicColumn.Data_Type);
if (dynamicColumn.Data_Type == "DateTime")
{
fixedLengthClassBuilder.LastField.Converter.Kind =
FileHelpers.ConverterKind.Date;
fixedLengthClassBuilder.LastField.Converter.Arg1 = "yyyyMMdd";
}
}
return fixedLengthClassBuilder;
}
、私はオブジェクトが今
var fileHelperEngine = new FileHelperEngine(classBuilder.CreateRecordClass())
var parseResult = fileHelperEngine.ReadFileAsList(fileName);
以下のようFileHelperEngineを作成する方法を上から返され、parseResult
はそれがList<T>
List<object>
になります使用します
fileHelperEngine
戻っList<T>
我々はこのためのclassBuilder.CreateRecordClass()
に合格しない、私はループに各レコードを持っていたし、それぞれのタイプに変換します。私は、オートマチックも、オブジェクトのプロパティが変換されないため変換できないと信じています。
このライブラリにこの何かを追加する必要がありますか、それとも何か不足していますか?
' 'リスト新しいFixedLengthClassBuilder(クラス名)'ランタイムです。 ''が何を返すべきかをどうやって知っていますか?技術的に; 'List 'は作成できますが、 'IList'として返されます。 –
古いコードで使用したとき、私のメソッドに' 'を渡して、var' fhEngine = new FileHelperEngine ()のように作成します。 'ので、' List 'を返しましたが、' classBuilder'を渡すとジェネリック型を受け付けませんでしたか? –
superachu
'const string className =" My_Dynamic_Class ";'を ''パラメータとして渡していますか? thats why ...あなたの例では 'fhEngine = new FileHelperEngine ()'のようになりますが、上記の例ではありません。 –