5

.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, IEnumerable1 レコード、Int32 maxRecords) FileHelpers.FileHelperEngine で1.WriteFile(String fileName, IEnumerable1 レコード、Int32 maxRecords) FileHelpers.FileHelperEngine で1.WriteFile(String fileName, IEnumerable1 レコード) 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)

ここで何かが欠けているに違いないと確信していますが、それが何であるかわかりません。どんな助けでも大歓迎です。

4

2 に答える 2

3

ライブラリの最新バージョンを試してみてください:

http://teamcity.codebetter.com/viewLog.html?buildId=21768&tab=artifacts&buildTypeId=bt65 (ゲストとしてログイン)

そのバージョンのドットがエラーを修正する場合は、コメントで教えてください。テストケースをライブラリに追加して、動作することを確認します

于 2011-02-23T02:34:19.817 に答える
0

属性を使用し[FieldNullValue("")]て、空のフィールドのデフォルト値を指定します。

于 2011-02-22T11:24:05.973 に答える