C# FileHelpers库:AfterReadRecord编译错误

C# FileHelpers库:AfterReadRecord编译错误,c#,csv,filehelpers,C#,Csv,Filehelpers,我希望这里有一位使用FileHelpers库的专家 我正在使用Nuget的2.9.9稳定版本,并尝试使用AfterReadRecord事件处理程序测试字段是否为空 我的代码以简化形式显示如下: public class Test { public class MyClass { public string Name; } public static void engine_AfterReadRecord(EngineBase engine, FileHelpers.Events.A

我希望这里有一位使用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);
 }
}
公共类测试
{
公共类MyClass
{
公共字符串名称;
}
公共静态无效引擎\u AfterReadRecord(EngineBase引擎、FileHelpers.Events.AfterReadEventArgs e)
{
if(String.IsNullOrWhiteSpace(e.Record.Name))
{
抛出新的InvalidDataException(“需要名称”);
}
}
public void ReadCSV()
{
FileHelperEngine=newFileHelperEngine(typeof(MyClass));
engine.Options.IgnoreFirstLines=1;
engine.ErrorManager.ErrorMode=ErrorMode.Save并继续;
engine.AfterReadRecord+=新的FileHelpers.Events.AfterReadHandler(engine\u AfterReadRecord);
}
}
ReadCSV文件的最后一行出现编译错误。错误是:

Cannot implicitly convert type 'FileHelpers.Events.AfterReadHandler<MyClass>' to
'FileHelpers.Events.AfterReadHandler<object>'
无法将类型“FileHelpers.Events.AfterReadHandler”隐式转换为
'FileHelpers.Events.AfterReadHandler'
我卡住了。有帮手吗


Jake

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

试试这个:

  var engine = new FileHelperEngine<MyClass>();
  engine.Options.IgnoreFirstLines = 1;
  engine.ErrorManager.ErrorMode = ErrorMode.SaveAndContinue;
  engine.AfterReadRecord += new FileHelpers.Events.AfterReadHandler<MyClass>(engine_AfterReadRecord);
var engine=new FileHelperEngine();
engine.Options.IgnoreFirstLines=1;
engine.ErrorManager.ErrorMode=ErrorMode.Save并继续;
engine.AfterReadRecord+=新的FileHelpers.Events.AfterReadHandler(engine\u AfterReadRecord);

尝试创建MyClass的对象,并用它代替Marcos。我以前试过,但错误地这样做了:“FileHelperEngine=new FileHelperEngine();”这显然无法编译。Doh。谢谢