FileHelpers cannot map converted field into destination array
- by jaffa
I have the following record (reduced for brevity):
[DelimitedRecord(",")]
[IgnoreFirst]
[IgnoreEmptyLines()]
public class ImportRecord
{
[FieldQuoted]
[FieldTrim(TrimMode.Both)]
public string FirstName;
[FieldQuoted]
[FieldTrim(TrimMode.Both)]
public string LastName;
[FieldQuoted]
[FieldTrim(TrimMode.Both)]
[FieldOptional]
[FieldConverter(typeof(TestPropertyConverter))]
public int[] TestProperty;
}
Converter code:
public class TestPropertyConverter : ConverterBase
{
public override object StringToField(string from)
{
var ret = from.Split('|').Select(x => Convert.ToInt32(x)).ToArray();
return ret;
}
}
So an example record could be:
John, Smith, 1|2|3|4
It would expect the values 1,2,3,4 to expand and fill the TestProperty array. However, I'm getting the following exception:
At least one element in the source array could not be cast down to the destination array type.
I've tried to debug into the code and it seems to blow-up in the ExtractFieldValue() function inside FieldBase.cs where it tries to return out of the function.
The following line seems to be the culprit:
res.ToArray(ArrayType);
It seems to expect the 'res' variable to be the destination type array, but it contains 1 element of the array itself.
Can anyone suggest if I'm doing this wrong or a possible fix?