FileHelpers и исключение типа данных

Я использую библиотеку FileHelpers для импорта файла с разделителями табуляции. Я включил ErrorMode.SaveAndContinue. Проблема, с которой я сталкиваюсь, заключается в том, что, когда определенные поля имеют недопустимый тип данных

 [FieldConverter(ConverterKind.Decimal)]
 public decimal? Price;

(например, десятичное? Поле цены имеет строковое значение в нем xxxxxx) в одной записи, библиотека проверяет только первое значение поля и выдает внутреннее исключение, которое регистрируется в ErrorManager.Errors.

Мне нужно также проверить оставшиеся поля в той же строке и записать их ошибки в том же цикле.

Как я могу это сделать?

** Обратите внимание, что я пытался написать CustomConverter, но мне снова нужно выдать ConvertException, чтобы он перехватывался ErrorManager и просто переходил к следующей строке.

AfterReadRecord не вызывается из-за исключения

1 ответ

Такое поведение предусмотрено в первых версиях библиотеки. Исключением является бросок при обнаружении проблемы или регистрация ошибки при наличии ErrorManager.

Лучший способ решить вашу проблему - использовать строковое поле для Price, а затем выполнить необходимые проверки в методе AfterReadRecord.

Например

public class YourClass: INotifyRead
{
 [FieldConverter(ConverterKind.Decimal)]
 public string Price;

 void AfterReadRecord (...)
 // Validate inside this method
}
Другие вопросы по тегам