私は次の記録を持っています(簡潔にするために縮小しています):
[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 配列が満たされることが期待されます。ただし、次の例外が発生します。
ソース配列の少なくとも 1 つの要素が、宛先配列型にキャストできませんでした。
私はコードにデバッグしようとしましたが、関数から戻ろうとする FieldBase.cs 内の ExtractFieldValue() 関数で爆発するようです。次の行が原因のようです。
res.ToArray(ArrayType);
「res」変数が目的の型の配列であることを期待しているようですが、配列自体の要素が 1 つ含まれています。
私がこれを間違っているのか、それとも可能な修正をしているのか、誰かが提案できますか?