Я использую версию 2.0 библиотеки FileHelpers, которая задокументирована как способная обрабатывать типы .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 fieldValueSignerSigning.Signing.Signing.Signing.Signing.Signing.Signing.Signing.Signing.Signing.Signing) в FileHelpers.в 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-й фин..Main (String [] args) в C: \ dev \ src \ TestingFileHelpers \ TestingFileHelpers \ Program.cs: строка 19 в System.AppDomain._nExecuteAssembly (RuntimeAssembly, аргументы String []) в System.AppDomain.ExecuteAssembly (String assemblyFileСвидетельство собранияСеcurity, String [] args) в Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly () в System.Threading.ThreadHelper.ThreadStart_Context (состояние объекта) в System.Threading.ExecutionContext.Run (ExecutionContext executeContext, ObjectBackbackback для объекта, обратный вызов состояния StateCallback)ignoreSyncCtx) в System.Threading.ExecutionContext.Run (ExecutionContext executeContext, ContextCallback callback, состояние объекта) в System.Threading.ThreadHelper.ThreadStart ()
Я уверен, что что-то здесь отсутствует, но не могу понятьчто это такое.Любая помощь высоко ценится.