您好我正在使用“CsvHelper”(v 2.16.3),我想在我的对象中使用前缀,将子前缀附加到父前缀。
但我没有这样做, CsvJelper支持吗?
例如: 我的模特:
public class ExampleModel
{
public string status { get; set; }
public ExampleModelNode leftNode { get; set; }
public ExampleModelNode rightNode { get; set; }
}
public class ExampleModelNode
{
public string status { get; set; }
public NodeData data { get; set; }
}
public class NodeData
{
public string data { get; set; }
}
我的地图类:
class ExampleModelMap : CsvClassMap<ExampleModel>
{
public ExampleModelMap()
{
Map(m => m.status);
References<ExampleModelNodeMap>(m => m.leftNode).Prefix("Right_");
References<ExampleModelNodeMap>(m => m.rightNode).Prefix("Left_");
}
}
class ExampleModelNodeMap : CsvClassMap<ExampleModelNode>
{
public ExampleModelNodeMap()
{
AutoMap(false,true);
References<NodeDataMap>(m => m.data).Prefix("Data_");
}
}
class NodeDataMap : CsvClassMap<NodeData>
{
public NodeDataMap()
{
AutoMap(false,true);
}
}
初始化和正在运行:
ExampleModel exampleModel = new ExampleModel()
{
status = "A",
rightNode = new ExampleModelNode()
{
status = "L",
data = new NodeData()
{
data = "L Data"
}
},
leftNode = new ExampleModelNode()
{
status = "R",
data = new NodeData()
{
data = "R Data"
}
}
};
StringBuilder sb = new StringBuilder();
TextWriter writer = new StringWriter(sb);
var csv = new CsvWriter(writer);
csv.Configuration.RegisterClassMap(new ExampleModelMap());
csv.Configuration.PrefixReferenceHeaders = true;
csv.WriteHeader(typeof(ExampleModel));
csv.WriteRecord(exampleModel);
writer.Flush();
writer.Close();
File.WriteAllText("csv.csv", sb.ToString());
输出为:
但我想要的预期输出是:
CsvHelper支持吗?我怎样才能得到这个映射?