c# - 如何分解此代码确实写入 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>();
我必须明确写出我使用哪个类。
如何分解此代码?
我知道标题不好。有人可以帮我找到一个更好的标题吗?
解决方案
为什么不使用简单的泛型实现?
代码片段在这里:
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>()
它对你有用吗?
推荐阅读
- laravel - 使用 Laravel/Eloquent 填充数据透视表
- node.js - Mongoose 没有按预期发送数据
- go - 划分时间。Golang 中的持续时间
- javascript - 查看firefox中可以调试哪一行
- jquery - 带有'transform:rotateY'的jQuery连续动画总是在同一个方向
- android - Fabric:将 apiKey 从 AndroidManifest 移动到 fabric.properties 后,无法从 crashlytics 检索设置
- azure - Azure 函数应用中的函数特定设置
- php - 如何通过 id 向另一个表中插入数据
- java - 在不丢失精度的情况下将两个浮点数编码为双精度
- typescript - 如何通过 props 更改私有 @mobx.observable.ref mobx 状态?