我正在写一个基于一个对象的CSV文件,该对象嵌套了另一个对象。我只想写一个嵌套对象的特定属性,而不是所有属性。
在下面的示例中,我期望的结果是仅将用户对象的网络名称写入CSV文件,而不是网络名称和操作员ID。但是,如上所述,它将输出两者。我可以为这个场景编写一个自定义的定义映射,但我想知道我是否可以指出要使用的特定属性。
public sealed class InventoryDefinitionMap : CsvClassMap<InventoryItem>
{
public InventoryDefinitionMap()
{
Map(m => m.inventoryId).Name("Inventory Id");
Map(m => m.serialNumber).Name("Serial Number");
References<UserDefinitionMap>(m => m.AssignedUser);
}
}
public sealed class UserDefinitionMap : CsvClassMap<User>
{
public UserDefinitionMap()
{
Map(m => m.operatorId).Name("ID");
Map(m => m.networkName).Name("Network Name");
}
}
void WriteCSVFile(List<InventoryItem> Items)
{
using (TextWriter writer = File.CreateText(fileLoc))
using(var Csv = new CsvWriter(writer))
{
Csv.Configuration.RegisterClassMap<InventoryItemDefinitionMap>();
Csv.WriteHeader<InventoryItem>();
foreach (Item I in Items)
{
Csv.WriteRecord(I);
}
}
}