Может ли библиотека FileHelpers записывать классы, содержащие пустые поля, а также читать их? - PullRequest
5 голосов
/ 21 февраля 2011

Я использую версию 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 ()

Я уверен, что что-то здесь отсутствует, но не могу понятьчто это такое.Любая помощь высоко ценится.

Ответы [ 2 ]

3 голосов
/ 23 февраля 2011

Можете ли вы попробовать с последней версией библиотеки:

http://teamcity.codebetter.com/viewLog.html?buildId=21768&tab=artifacts&buildTypeId=bt65 (войдите как гость)

Если эта версия исправит ошибку, просто скажите мне в комментарии, и я добавлю тестовый пример в lib, чтобы убедиться, что он работает

0 голосов
/ 22 февраля 2011

Используйте атрибут [FieldNullValue("")], чтобы указать значения по умолчанию для пустых полей.

...