使用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;
}
}
答案 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
的软件包