我有以下记录(为简洁起见减少了):
[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;
}
转换器代码:
public class TestPropertyConverter : ConverterBase
{
public override object StringToField(string from)
{
var ret = from.Split('|').Select(x => Convert.ToInt32(x)).ToArray();
return ret;
}
}
因此,示例记录可能是: John, Smith, 1|2|3|4
它会期望值 1、2、3、4 扩展并填充 TestProperty 数组。但是,我收到以下异常:
源数组中的至少一个元素无法转换为目标数组类型。
我试图调试代码,它似乎在 FieldBase.cs 内的 ExtractFieldValue() 函数中爆炸,它试图从函数中返回。以下行似乎是罪魁祸首:
res.ToArray(ArrayType);
似乎期望“res”变量是目标类型数组,但它包含数组本身的 1 个元素。
谁能建议我做错了还是可能的解决方法?