5

我正在使用 FileHelpers 库的 2.0 版,该库被记录为能够处理 .NET 2.0 Nullable 类型。

我正在使用文档中示例中给出的代码:

[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(Object record) at FileHelpers.FileHelperEngine 1.WriteStream(TextWriter writer, IEnumerable1 个记录,Int32 maxRecords) 在 FileHelpers.FileHelperEngine 1.WriteFile(String fileName, IEnumerable1 个记录,Int32 maxRecords) 在 FileHelpers.FileHelperEngine1.WriteFile(String fileName, IEnumerable1 条记录)在 C:\dev\src\TestingFileHelpers\TestingFileHelpers\Program.cs 中的 TestingFileHelpers.Program.Main(String[] args):System.AppDomain._nExecuteAssembly(RuntimeAssembly 程序集,String[] args) 的第 19 行.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args) 在 Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly() 在 System.Threading.ThreadHelper.ThreadStart_Context(Object state) 在 System.Threading.ExecutionContext.Run(ExecutionContext在 System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) 在 System.Threading.ThreadHelper.ThreadStart() 的 executionContext, ContextCallback 回调, 对象状态, Boolean 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 回答