我使用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's和Panagiotis'答案互为补充。
最佳答案
默认情况下,您需要使用属性而不是对象模型中的字段,它将映射匹配的公共(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/