【发布时间】:2012-06-19 09:12:55
【问题描述】:
我有以下记录(为简洁而减少):
[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;
}
}
因此,示例记录可能是: 约翰,史密斯,1|2|3|4
它会期望值 1、2、3、4 扩展并填充 TestProperty 数组。但是,我收到以下异常:
源数组中的至少一个元素无法转换为目标数组类型。
我尝试调试代码,但它似乎在 FieldBase.cs 内的 ExtractFieldValue() 函数中爆炸,它试图从函数中返回。 以下行似乎是罪魁祸首:
res.ToArray(ArrayType);
似乎期望“res”变量是目标类型数组,但它包含数组本身的 1 个元素。
谁能建议我是否做错了或可能的解决方法?
【问题讨论】:
标签: c# .net parsing csv filehelpers