2011-11-08 6 views
2

FileHelpersライブラリを使用すると、.csvファイルを書き込もうとするとNullReferenceExceptionが発生します。Filehelpers nullの10進数値を書き込もうとすると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; 

    } 
} 
+0

AのNullable と呼ばれるパッケージの下NuGetにしかし提供されていますが問題はないはず。 http://www.filehelpers.com/example_nullable.html –

+0

私が使用しているバージョンは2.0.0.0で、nugetのものです。これは最新バージョンのようです。上のコードは例外をスローします。私はgithubに完全なプロジェクトを投稿しましたが、vs2010のソリューション/プロジェクトに包まれたここに見られるものだけです:https://github.com/estubbs/Stack-overflow-fh-questions – Erick

答えて

0

FileHelpers 2.9.9ではこの問題が修正されています。以前は公式サイト(ベータ版)で利用可能でしたが、今は見つけることができません。あなたがFileHelpersの古代のバージョンである場合を除き

それはFileHelpers安定

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(); 
    } 
} 

あなたはどのdecimal?フィールドに[FieldConverter()]属性を追加するにはレコードクラスを変更する必要があります。

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

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

} 
関連する問題