Filehelper — возникает ошибка, даже если используется FieldConverter

Это продолжение вопроса Управление записью об ошибке в FileHelper

Я должен знать, что если есть ошибка, мы можем переопределить ее, используя нулевое значение, как указано в приведенном выше вопросе.

Если я переопределю значение, тот факт, что на 1-м месте была ошибка, теряется. Есть ли способ обновить неправильное значение с помощью нуля, а также выдать ошибку в erroinfo для этой записи?

Спасибо


person KeenUser    schedule 24.09.2016    source источник


Ответы (1)


Вы можете хранить ошибки где-то самостоятельно и выбрасывать их после обработки строк.

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();
    }
}
person shamp00    schedule 13.10.2016