我有这些类。
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
,但与其他字段。
我有一个类在csv文件中编写Record1
的列表
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
中编写ToCsv。
但在csv.Context.RegisterClassMap<Record1Map>();
我必须明确地写下我使用的是哪个类。
如何分解此代码?
我知道标题不好。如果有人帮我找一个更好的标题,请
为什么不使用简单的泛型实现?
代码片段在这里:
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>()
它对你有用吗?