.NET 2.0 の Nullable 型を処理できると記載されている FileHelpers ライブラリのバージョン 2.0 を使用しています。
ドキュメントの例にあるコードを使用しています。
[DelimitedRecord("|")]
public class Orders
{
public int OrderID;
public DateTime? OrderDate;
[FieldConverter(ConverterKind.Date, "ddMMyyyy")]
public DateTime? RequiredDate;
public int? ShipVia;
}
FileHelperEngine を使用すると、OrderDate、RequiredDate、または ShipVia フィールドに値がないファイルを正常に読み取ることができます。ファイルは次のようになります。
1|||
ただし、結果の Orders[] をファイルに書き出すことはできません。ライブラリは NullReferenceException をスローし、以下のスタック トレースが発生します。
FileHelpers.ConvertHelpers.CultureConverter.FieldToString(Object from) で FileHelpers.FieldBase.BaseFieldString(Object fieldValue) で FileHelpers.DelimitedField.CreateFieldString(StringBuilder sb, Object fieldValue) で FileHelpers.FieldBase.AssignToString(StringBuilder sb, Object fieldValue) で FileHelpers .RecordInfo.RecordToString(オブジェクト レコード) FileHelpers.FileHelperEngine で1.WriteStream(TextWriter writer, IEnumerable
1 レコード、Int32 maxRecords) FileHelpers.FileHelperEngine で1.WriteFile(String fileName, IEnumerable
1 レコード、Int32 maxRecords) FileHelpers.FileHelperEngine で1.WriteFile(String fileName, IEnumerable
1 レコード) C:\dev\src\TestingFileHelpers\TestingFileHelpers\Program.cs:System.AppDomain._nExecuteAssembly(RuntimeAssembly アセンブリ、String[] args) の 19 行目の TestingFileHelpers.Program.Main(String[] args) at System System.Threading.ThreadHelper.ThreadStart_Context(オブジェクト状態) の Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly() の .AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args) System.Threading.ThreadHelper.ThreadStart() での System.Threading.ExecutionContext.Run(ExecutionContext executionContext、ContextCallback コールバック、オブジェクト状態) での executionContext、ContextCallback コールバック、オブジェクト状態、ブール値の ignoreSyncCtx)
ここで何かが欠けているに違いないと確信していますが、それが何であるかわかりません。どんな助けでも大歓迎です。