Как определить значение по умолчанию для поля класса элемента FileHelpers

Я пытаюсь загрузиться, файл CSV (удаляет известь,''; и кавычки '"').

Я успешно создал все (инструмент мастера является потрясающим), но существует одна вещь, для которой я не могу найти решение.

В основном у меня есть целое число (Система. Int32) столбец. В теории большинство записей будет иметь положительное целочисленное значение в том столбце. Иногда, однако, я мог бы встретиться со значением "N/A" в том столбце. То, чего я хочу достигнуть, сделали, чтобы FileHelpers присвоился, значение по умолчанию (-1 работает просто великолепно), когда он встречается с "N/A" в том столбце.

Кто-либо знает, возможно ли это?

PS: Я, возможно, должен был бы сделать то же для Системы. Поле DateTime (это могло бы также иногда иметь "N/A").

5
задан Paulius 5 January 2010 в 15:32
поделиться

2 ответа

[

] Лучшим способом сделать то, что вы хотите, будет использование атрибута []FieldConverter[] на этих полях и создание пользовательских классов конвертеров, которые назначают значение по умолчанию, которое вы хотите, чтобы поле было. [

] [

] Необходимо создать класс, который наследует []ConverterBase[], а затем обеспечить реализацию двух виртуальных методов, []StringToField()[] и []FieldToString()[].[

]. [

]В методе []FieldToString()[] проверяется, равна ли строка "N/A". Если да, то верните нужное вам значение по умолчанию.[

]. [

] Вам понадобятся два разных класса, один из которых может обрабатывать []Int32[], а другой - []DateTime[].[

]. [

] В документации FileHelpers есть пример того, как это сделать. []Link[][

]
5
ответ дан 13 December 2019 в 22:09
поделиться
[

] Как сказал Брэндон, тебе нужен этот преобразователь [

] [
// In your class
[FieldConverter(typeof(NoValueConverter))]
public int Number;

// Te Converter
public class NoValueConverter : ConverterBase
{
    public override object StringToField(string sourceString)
    {
       if (sourceString.Trim().ToUpper() == "N/A")
        return -1; // or int.MinValue;
       else
        return Integer.Parse(sourceString);
    }

    public override string FieldToString(object fieldValue)
    {
        return fieldValue.ToString();
    }

}
] [

] Мы рады, что тебе понравился волшебник :) (мы работаем с классом автоопределения, чтобы облегчить создание класса mapping)[

].
5
ответ дан 13 December 2019 в 22:09
поделиться
Другие вопросы по тегам:

Похожие вопросы: