CsvHelper是否支持多个前缀?

时间:2017-07-31 05:46:51

标签: c# .net csv export-to-csv csvhelper

您好我正在使用“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());

输出为:

enter image description here

但我想要的预期输出是:

enter image description here

CsvHelper支持吗?我怎样才能得到这个映射?

0 个答案:

没有答案