Filehelper - 即使使用FieldConverter也会引发错误

时间:2016-09-24 05:24:32

标签: c# filehelpers

这是问题的延续 Manipulate Error Record in FileHelper

我必须知道如果有错误,我们可以使用null值覆盖它,如上面的问题所示。

如果我覆盖该值,则第一个位置出现错误的事实将丢失。有没有办法用null更新错误的值,并在该记录的erroinfo中抛出错误?

由于

1 个答案:

答案 0 :(得分:0)

您可以自己将错误存储在某处,并在处理完行后抛出它们。

public class DateConverter : ConverterBase
{
    public override object StringToField(string from)
    {
        //if you can't convert to date time.. .return null
        DateTime date;
        if (!DateTime.TryParse(from, out date))
        {
            ErrorTracker.Add(string.Format("Failed to parse date {0}.", from));
            return null;
        }

        return date;
    }
    /// etc...
}

public static class ErrorTracker
{
    public static List<string> ErrorList = new List<string>();
    public static void Add(string errorMessage)
    {
        ErrorList.Add(errorMessage);
    }
    public static void Clear()
    {
        ErrorList.Clear();
    }
}

class Program
{
    static void Main(string[] args)
    {
        var engine = new FileHelperEngine<ModelClass>();
        ErrorTracker.Clear();
        var productRecords = engine.ReadFile(@"C:\whatever.txt");
        foreach (var errorMessage in ErrorTracker.ErrorList)
        {
            Console.WriteLine(errorMessage);
        }
        Console.ReadKey();
    }
}