10

我一直遇到这个错误:

CsvHelper.dll 中出现“CsvHelper.CsvReaderException”类型的未处理异常

附加信息:没有为类型“RPS_String_Parse.Program+FormattedRow”映射任何属性。

但我相信我正确地遵循了文档。在参考了“入门”部分后,我实现了这个:

using (var sr = new StreamReader(filePath))
{
    var csv = new CsvReader(sr);
    var records = csv.GetRecords<FormattedRow>();
    foreach (var record in records)
    {
        Console.WriteLine(record.Address1);
    }

    Console.ReadLine();
}

和我的班级:

public class FormattedRow
{
        public string IDOrderAlpha;
        public string IDOrder;
        public string AddressCompany;
        public string Address1;
        public string Address2;
        public string AddressCity;
        public string AddressState;
        public string AddressZip;
        public string AddressCountry;
        public string ShipMethod;
        public string ContactEmail;
        public string ContactName;
        public string ServiceRep;
        public string CustomerPuchaseOrder;
}

我觉得这应该可行,因为文档指出:

自动映射

如果您不提供映射文件,将使用自动映射。自动映射将按照它们出现的顺序映射您的类中的属性。如果属性是自定义类,它会按照它们出现的顺序递归地映射该类中的属性。如果自动映射器遇到循环引用,它将停止向下那个参考分支

我错过了什么?

4

2 回答 2

13

文档声明它将映射到Properties. 你的班级有Fields. 进行此更改:

public class FormattedRow
{
    public string IDOrderAlpha { get; set; }
    // add { get; set; } for all
}

这会将您的字段更改为“自动属性”。

于 2014-04-30T18:27:23.480 回答
1

您需要设置映射的配置选项:

var generatedMap = csv.Configuration.AutoMap<MyClass>();

所以看来你需要告诉它自动映射。我以前从未使用过这个库。

编辑: 乔恩 B 搞定了。

于 2014-04-30T18:30:20.497 回答