CsvHelper中的参考POCO对象属性

问题描述 投票:0回答:1

我在通用方法中使用了一些嵌套类,如下所述;

基类:

public class Model
{
public int Id {get; set; }
public string Name {get; set; }
}

第1类:

public class Foo: Model
{
public string Description {get; set; }

    [Name("Parent")]
    [HeaderPrefix("z_Parent")]
public Foo ParentFoo {get; set; }
}

第2类:

public class Bar: Model
{
public Foo MyFoo {get; set; }
}

[当我将Foo的一个实例导出到CSV时,我从传入的“ Foo”实例以及“ ParentFoo”的所有字段中获取字段。理想情况下,我只想拥有ParentFoo.Name。同样,当我导出“ Bar”的实例时,我希望字段“ MyFoo”实际导出“ MyFoo.Name”作为值。

我已经尝试过使用配置选项了,我所能想到的就是将类设置为忽略引用,这是因为不包括所有父字段,但对父对象的引用是也缺少;

var csv = new CsvWriter(writeFile, CultureInfo.InvariantCulture);
csv.Configuration.IgnoreReferences = true;
csv.WriteRecords(Items);

是否有办法实现这一目标,或者我应该考虑编写自己的CSV导出器?

TIA

c# csv reflection csvhelper
1个回答
0
投票

您可以使用ClassMap

public sealed class FooClassMap : ClassMap<Foo>
{
    public FooClassMap()
    {
        Map(m => m.Id);
        Map(m => m.Name);
        Map(m => m.Description);
        Map(m => m.ParentFoo.Name).Name("ParentName");
    }
}
var csv = new CsvWriter(writeFile, CultureInfo.InvariantCulture);
csv.Configuration.RegisterClassMap<FooClassMap>();
csv.WriteRecords(Items);
© www.soinside.com 2019 - 2024. All rights reserved.