0

我希望这里有使用 FileHelpers 库的专家。

我正在使用 Nuget 的 2.9.9 稳定版本并尝试使用 AfterReadRecord 事件处理程序来测试字段是否为空。

我拥有的代码以简化形式显示如下:

public class Test
{
 public class MyClass
 {
  public string Name;
 }

 public static void engine_AfterReadRecord(EngineBase engine, FileHelpers.Events.AfterReadEventArgs<MyClass> e)
 {
  if (String.IsNullOrWhiteSpace(e.Record.Name))
  {
   throw new InvalidDataException("Name is required");
  }
 }

 public void ReadCSV()
 {
  FileHelperEngine engine = new FileHelperEngine(typeof(MyClass));
  engine.Options.IgnoreFirstLines = 1;
  engine.ErrorManager.ErrorMode = ErrorMode.SaveAndContinue;
  engine.AfterReadRecord += new FileHelpers.Events.AfterReadHandler<MyClass>(engine_AfterReadRecord);
 }
}

ReadCSV 文件的最后一行存在编译错误。错误是:

Cannot implicitly convert type 'FileHelpers.Events.AfterReadHandler<MyClass>' to
'FileHelpers.Events.AfterReadHandler<object>'

我被困住了。有帮手吗?

杰克

4

1 回答 1

0

问题是您正在使用不使用泛型但在处理程序中使用泛型的引擎版本

试试这个:

  var engine = new FileHelperEngine<MyClass>();
  engine.Options.IgnoreFirstLines = 1;
  engine.ErrorManager.ErrorMode = ErrorMode.SaveAndContinue;
  engine.AfterReadRecord += new FileHelpers.Events.AfterReadHandler<MyClass>(engine_AfterReadRecord);
于 2013-07-31T19:35:03.907 回答