c# - 如何使用必需的非空列设置 filehelpers

标签 c# filehelpers

我一直在查看 filehelpers 文档,但似乎没有任何内容可以处理列中的空值。我需要能够在所有列上设置“非空”字符串属性。

谁能指出我正确的方向?

最佳答案

您可以在 AfterReadRecord 事件中执行任何您想要的验证。如果您希望在出现错误时继续处理文件的其余部分,您还需要将 ErrorMode 设置为 SaveAndContinue。请参阅下面的工作示例。

[DelimitedRecord("|")]
public class MyClass
{
    public string Field1;
    public string Field2;
    public string Field3;
}

class Program
{
    static void Main(string[] args)
    {
        var engine = new FileHelperEngine<MyClass>();
        engine.AfterReadRecord += new FileHelpers.Events.AfterReadHandler<MyClass>(engine_AfterReadRecord);
        engine.ErrorMode = ErrorMode.SaveAndContinue;
        // import a record with an invalid Email
        MyClass[] validRecords = engine.ReadString("Hello||World");
        ErrorInfo[] errors = engine.ErrorManager.Errors;
        Assert.AreEqual(1, engine.TotalRecords); // 1 record was processed
        Assert.AreEqual(0, validRecords.Length); // 0 records were valid
        Assert.AreEqual(1, engine.ErrorManager.ErrorCount); // 1 error was found
        Assert.That(errors[0].ExceptionInfo.Message == "Field2 is invalid");
    }

    static void engine_AfterReadRecord(EngineBase engine, FileHelpers.Events.AfterReadEventArgs<MyClass> e)
    {
        if (String.IsNullOrWhiteSpace(e.Record.Field1))
            throw new Exception("Field1 is invalid");
        if (String.IsNullOrWhiteSpace(e.Record.Field2))
            throw new Exception("Field2 is invalid");
        if (String.IsNullOrWhiteSpace(e.Record.Field3))
            throw new Exception("Field3 is invalid");
    }
}

关于c# - 如何使用必需的非空列设置 filehelpers,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10206514/

相关文章:

c# - Items控制可点击的项目

c# - C# 中的错误处理

c# - c# 中的类(使用 filehelpers)- 可空字符串在其他可空类型不存在时给出错误

c# - 删除文件助手中的引号

c# - FileHelpers:搜索结果

c# - lambda WHERE 子句中的空值

c# - 如何使用 Infragistics XamDataGrid 将所选项目绑定(bind)到模型?

c# - 如何将文件类型与图标相关联?

c# - FileHelpers - 文件中的额外列在使用 FieldQuoted 属性时不会引发错误

c# - 使用 FileHelpers 导入 CSV 文件