我在通用方法中使用了一些嵌套类,如下所述;
基类:
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
您可以使用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);