我正在尝试使用CsvHelper库(v 2.4.0)的ConvertUsing方法。

我已经阅读了有关ConvertUsing的文档,但无法使其正常工作。

我正在使用一个简单的类:

public class Test
{
    public long Id { get; set; }
    public string Title { get; set; }
}

有了这个ClassMap:
public class TestClassMap : CsvClassMap<Test>
{
    public override void CreateMap()
    {
        Map(m => m.Id).Name("id").ConvertUsing(row => 11111);
        Map(m => m.Title).Name("title").ConvertUsing(row => row.GetField("title") + " 123");
    }
}

我的代码使用这些创建了该类的实例,然后将其写入CSV:
var test = new Test() { Id = 99, Title = "Test title" };

using (var streamWriter = new StreamWriter("test.csv"))
{
    var csv = new CsvWriter(streamWriter);
    csv.Configuration.RegisterClassMap<TestClassMap>();
    csv.WriteRecord(test);
}

但是,输出文件test.csv始终为以下格式:
id,title
99,Test title

我正在寻找的输出是:
id,title
11111,Test title 123

并且ConvertUsing被忽略。我尝试仅转换Id和仅Title,但这也不起作用。

有什么想法我要去哪里吗?

最佳答案

目前,ConvertUsing仅在阅读时使用。

如果要自定义输出,可以使用自定义类型转换器。通过类型转换器选项,您还具有一些有限的能力。

09-06 19:00