具有 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);