我使用CsvHelper 4.0.3

我有一个嵌套的类,如下所示:

private class CsvLine {
    public string Solution;
    public string Project;
    public string DependsOnProject;
    public string Weight;
    public string DependsOnPackage;
    public string PackageVersion;
}

我想使用CsvHelper解析的.csv文件具有以下字段名称:
Solution,Project,DependsOnProject,Weight,DependsOnPackage,PackageVersion
这是我的代码:
TextReader readFile = new StreamReader(dependenciesCsvFilePath);
var csvReader = new CsvReader(readFile);
IEnumerable<CsvLine> records = csvReader.GetRecords<CsvLine>();

根据文档here,上面的代码应该可以工作。

但是,当我检查records时,会看到消息No members are mapped for type 'ParentClass+CsvLine'

我将CsvLine的可访问性从private更改为public,但这没什么区别。

我做错了什么?

编辑:我尝试取消嵌套CsvLine类并将其公开,但是这也没有帮助。

编辑:我以Nkosi suggested进行了更改;但是,现在它说records是一个空集合:“枚举没有结果”。我的.csv文件中肯定存在数据,因此该集合不应为空。

以下是一些示例数据:
Solution,Project,DependsOnProject,Weight,DependsOnPackage,PackageVersion
FOD.sln,ABC.DEF,IMS.ABC,1,,
FOD.sln,ABC.DEF,IMS.DEF,1,,
FOD.sln,ABC.DEF,IMS.GHI,1,,
FOD.sln,ABC.DEF,IMS.JKL,1,,

编辑:解决了! Nkosi'sPanagiotis'答案互为补充。

最佳答案

默认情况下,您需要使用属性而不是对象模型中的字段,它将映射匹配的公共(public)成员

public class CsvLine {
    public string Solution { get; set; }
    public string Project { get; set; }
    public string DependsOnProject { get; set; }
    public string Weight { get; set; }
    public string DependsOnPackage { get; set; }
    public string PackageVersion { get; set; }
}

您还应该阅读有关将类映射到csv文件的内容。

CsvHelper: Class Mapping

关于c# - CsvHelper:没有成员被映射为类型,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47058423/

10-10 03:13