首页 > 解决方案 > 如何分解此代码确实写入 csv 文件

问题描述

我有这些课。

public Record1(UniqueWallPart uniqueWallpart)
{
     public readonly string field1 = "";
     public readonly string field2 = "";;
        
}

public class Record1Map : ClassMap<Record1>
{
    private Record1Map ()
    {
        Map(m => m.field1).Index(0).Name("f1");
        Map(m => m.field2).Index(1).Name("f2");
    }
}

和快速相同Record2,但与其他领域。

Record1我有一门课要在 csv 文件中写一个列表

using CsvHelper;
using CsvHelper.Configuration;
class writerRecord1
{
    private ImmutableArray<SegmentRecord> Record1 ;


    public string ToCsv()
    {
        using var writer = new StringWriter();
        using var csv = new CsvWriter(writer, CultureInfo.InvariantCulture);
        csv.Context.RegisterClassMap<Record1Map>();
        csv.WriteRecords(Records);
        writer.Flush();
        return writer.ToString();
    }
}

我想分解代码以便在classWriter2.

但是在 csv.Context.RegisterClassMap<Record1Map>(); 我必须明确写出我使用哪个类。

如何分解此代码?

我知道标题不好。有人可以帮我找到一个更好的标题吗?

标签: c#csv

解决方案


为什么不使用简单的泛型实现?

代码片段在这里:

using CsvHelper;
using CsvHelper.Configuration;

class WriterRecord<T, TMap>
    where T: class
    where TMap: ClassMap<T>
{
    private ImmutableArray<T> Records;

    public string ToCsv<T>()
    {
        using var writer = new StringWriter();
        using var csv = new CsvWriter(writer, CultureInfo.InvariantCulture);
        csv.Context.RegisterClassMap<TMap>();
        csv.WriteRecords(Records);
        writer.Flush();
        return writer.ToString();
    }
}

你可以在你的代码中使用这个类

  • new WriterRecord<Record1, Record1Map>()
  • new WriterRecord<Record2, Record2Map>()

它对你有用吗?


推荐阅读