使用 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;
}
}
最佳答案
您可以使用自定义转换器。
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;
}
关于c# - Filehelpers NullReferenceException 尝试写入空十进制值时,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8044396/