如何正确调用FileHelpers.RecordTypeSelector?

问题描述 投票:0回答:1

我正在使用FileHelpers:https://www.filehelpers.net/

我有一个源文件,其中包含一组大约10种不同的RecordType。为了适应这种情况,我打算使用MultiRecordEngine(https://www.filehelpers.net/example/Advanced/MultiRecordEngine/)。

阅读说明时,我应该声明引擎

var engine = new MultiRecordEngine(typeof (Orders),
    typeof (Customer),
    typeof (SampleType));

...,然后输入“ CustomSelector” ...

engine.RecordSelector = new RecordTypeSelector(CustomSelector);

查看提供的链接上的文档,“ CustomSelector”是Selector.cs中的私有方法。

private Type CustomSelector(MultiRecordEngine engine, string recordLine)
{
    if (recordLine.Length == 0)
        return null;
    if (Char.IsLetter(recordLine[0]))
        return typeof (Customer);
    else if (recordLine.Length == 14)
        return typeof (SampleType);
    else
        return typeof (Orders);
}

没有提到任何委托,并且声明一个委托并不能改善Compiler先生对我的代码的看法。是否有人在MultiRecordEngine上有经验,可以告诉我我所缺少的显而易见的事实是什么?谢谢!

filehelpers
1个回答
0
投票
engine.RecordSelector = new RecordTypeSelector(CustomSelector);

...仅当CustomSelector是

local function时才有用,这使我感到不满意。我坚持使用单独的Selector类,并将“ CustomSelector”声明为公共静态变量:

public static Type CustomSelector(MultiRecordEngine engine, string recordLine) { if (recordLine.Length == 0) return null; if (Char.IsLetter(recordLine[0])) return typeof (Customer); else if (recordLine.Length == 14) return typeof (SampleType); else return typeof (Orders); }

一旦我告诉MultiRecordEngine在哪里找到它,
engine.RecordSelector = new RecordTypeSelector(Selector.CustomSelector);

...你真金。

我希望这可以帮助我节省下一个输入我的问题和答案所需的10分钟时间。请享用! :)
© www.soinside.com 2019 - 2024. All rights reserved.