尝试写入空小数值时,Filehelpers NullReferenceException

时间:2011-11-08 00:01:22

标签: c# .net nullreferenceexception filehelpers

使用FileHelpers库时,我在尝试编写.csv文件时遇到NullReferenceException。

我把问题缩小了。每当我有一个空小数?它抛出了这个例外。它在阅读时工作正常,而不是写作。

我添加了一个与我的应用程序显示相同问题的示例:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication11
{
   class Program
   {
      static void Main(string[] args) {
         rec record = new rec { id = 1, mydecimal = null };
         List<rec> records = new List<rec> { record };

         FileHelpers.FileHelperEngine<rec> engine = new FileHelpers.FileHelperEngine<rec>();

         Console.WriteLine(engine.WriteString(records));

      }
   }

   [FileHelpers.DelimitedRecord(",")]
   public class rec
   {
      public int id;
      public decimal? mydecimal;

   }
}

2 个答案:

答案 0 :(得分:1)

您可以使用自定义转换器。

public class NullableDecimalConverter : FileHelpers.ConverterBase
{
    public override object StringToField(string from)
    {
        return from;
    }

    public override string FieldToString(object fieldValue)
    {
        if (fieldValue == null)
            return String.Empty;
        return fieldValue.ToString();
    }
}

您需要修改记录类,才能将[FieldConverter()]属性添加到任何decimal?字段。

[FileHelpers.DelimitedRecord(",")]
public class rec
{
    public int id;

    [FileHelpers.FieldConverter(typeof(NullableDecimalConverter))]
    public decimal? mydecimal;

}

答案 1 :(得分:0)

讨厌回答我自己的问题,但FileHelpers 2.9.9解决了这个问题。它曾经在官方网站上提供(标记为测试版),但现在无法找到它。

然而,在NuGet中可以使用名为FileHelpers-stable

的软件包