具有 System.Reflection 的 CSVHelper 通用类映射
CSVHelper generic ClassMap with System.Reflection
我正在尝试将我的 class 的属性一般映射到 CSV 的列名,而不需要像
那样在 ClassMap 中编写每一行
Map(rm => rm.PUsrCrRequestedObject).Name("#P_USR_CR_RequestedObject");
因为我们有很多列,它们大多具有相同类型的映射。
所以我尝试了以下代码:
var classMap = csv.Configuration.AutoMap<RequestMonitoring>();
foreach (var property in typeof(RequestMonitoring).GetProperties())
{
var columnName = property.Name switch
{
"PNdsPn" => "$P_NDS_PN",
{ } x when x.StartsWith("PUsrCr") => property.Name.Replace("PUsrCr", "#P_USR_CR_"),
_ => property.Name
};
classMap.Map(requestMonitoring => property).Name(columnName);
}
我没有收到错误,但是如果我调试 ClassMap,上面的代码没有任何效果。
所以问题是我如何修复代码片段,或者如果不可能,也许如何为每个 属性
应用相同的名称转换
试试这个。
classMap.Map(typeof(RequestMonitoring), property).Name(columnName);
我正在尝试将我的 class 的属性一般映射到 CSV 的列名,而不需要像
那样在 ClassMap 中编写每一行Map(rm => rm.PUsrCrRequestedObject).Name("#P_USR_CR_RequestedObject");
因为我们有很多列,它们大多具有相同类型的映射。 所以我尝试了以下代码:
var classMap = csv.Configuration.AutoMap<RequestMonitoring>();
foreach (var property in typeof(RequestMonitoring).GetProperties())
{
var columnName = property.Name switch
{
"PNdsPn" => "$P_NDS_PN",
{ } x when x.StartsWith("PUsrCr") => property.Name.Replace("PUsrCr", "#P_USR_CR_"),
_ => property.Name
};
classMap.Map(requestMonitoring => property).Name(columnName);
}
我没有收到错误,但是如果我调试 ClassMap,上面的代码没有任何效果。
所以问题是我如何修复代码片段,或者如果不可能,也许如何为每个 属性
应用相同的名称转换试试这个。
classMap.Map(typeof(RequestMonitoring), property).Name(columnName);