我使用的是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(对象记录)
在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:line 19中的TestingFileHelpers.Program.Main(String [] args)中
在System.AppDomain._nExecuteAssembly(RuntimeAssembly程序集,String []参数)
在System.AppDomain.ExecuteAssembly(String assemblyFile,Evidence assemblySecurity,String [] args)中
在Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
在System.Threading.ThreadHelper.ThreadStart_Context(对象状态)
在System.Threading.ExecutionContext.Run(ExecutionContext执行上下文,ContextCallback回调,对象状态, bool ignoreSyncCtx)
在System.Threading.ExecutionContext.Run(ExecutionContext执行上下文,ContextCallback回调,对象状态)
在System.Threading.ThreadHelper.ThreadStart()

我确定我一定在这里遗漏了一些东西,但我无法弄清楚它是什么。任何帮助,不胜感激。

最佳答案

您可以尝试使用该库的最新版本吗?

http://teamcity.codebetter.com/viewLog.html?buildId=21768&tab=artifacts&buildTypeId=bt65(以访客身份登录)

如果该版本的点修复了错误,请在注释中告诉我,然后我将一个测试用例添加到lib中以确保其有效

关于c# - FileHelpers库是否可以编写包含可空字段的类并读取它们?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5066255/

10-12 06:49