我正在使用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,堆栈跟踪如下:
at 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)
at FileHelpers.RecordInfo.RecordToString(Object record)
在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中的TestingFileHelpers.Program.Main(String [] args):第19行
在System.AppDomain._nExecuteAssembly(RuntimeAssembly程序集,String [] args)
在System.AppDomain.ExecuteAssembly(String assemblyFile,Evidence assemblySecurity,String [] args)
在Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
在System.Threading.ThreadHelper.ThreadStart_Context(对象状态)
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext,ContextCallback callback,Object state,Boolean ignoreSyncCtx)
在System.Threading.ExecutionContext.Run(ExecutionContext executionContext,ContextCallback回调,对象状态)
在System.Threading.ThreadHelper.ThreadStart()
我确信我必须在这里遗漏一些东西,但我无法弄清楚它是什么。任何帮助非常感谢。
答案 0 :(得分:3)
您可以尝试使用该库的最新版本:
http://teamcity.codebetter.com/viewLog.html?buildId=21768&tab=artifacts&buildTypeId=bt65(以访客身份登录)
如果该版本点修复错误,请在评论中告诉我,我将向lib添加一个测试用例以确保其正常工作
答案 1 :(得分:0)
使用[FieldNullValue("")]
属性指定空字段的默认值。