我正在使用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上有经验,可以告诉我我所缺少的显而易见的事实是什么?谢谢!
engine.RecordSelector = new RecordTypeSelector(CustomSelector);
...仅当CustomSelector是
local function时才有用,这使我感到不满意。我坚持使用单独的Selector类,并将“ CustomSelector”声明为公共静态变量:一旦我告诉MultiRecordEngine在哪里找到它,
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); }
engine.RecordSelector = new RecordTypeSelector(Selector.CustomSelector);
...你真金。
我希望这可以帮助我节省下一个输入我的问题和答案所需的10分钟时间。请享用! :)