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
}