4

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;

   }
}
4

2 に答える 2

2

カスタム コンバーターを使用できます。

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;

}
于 2011-12-15T15:04:22.060 に答える
0

私自身の質問に答えるのは嫌いですが、FileHelpers2.9.9はこの問題を修正します。以前は公式サイト(ベータ版としてマーク)で入手できましたが、現在は見つかりません。

ただし、NuGetではFileHelpers-stableというパッケージで利用できます。

于 2012-07-13T19:59:22.870 に答える