【发布时间】:2020-11-15 08:24:33
【问题描述】:
我有这个班级和班级地图:
public class Subjects
{
private readonly IEncryption _encryption;
public Subjects(IEncryption encryption)
{
_encryption = encryption;
}
public Guid SubjectId { get; set; }
public string Code { get; set; }
public Guid OrganizationId { get; set; }
public string PreferredName { get; set; }
public string FirstName { get; set; }
public string MiddleName { get; set; }
public string LastName { get; set; }
public DateTime? DateOfBirth { get; set; }
public string Gender { get; set; }
public string LastNameInitial { get; set; }
public string CodeDisplay { get; set; }
public Guid? RaceId { get; set; }
public Guid? MaritalStatusId { get; set; }
public Guid? StatusId { get; set; }
public string Rank { get; set; }
public string Email { get; set; }
public string MobilePhone { get; set; }
public bool MobilePhoneDoNotLeaveMsg { get; set; }
public bool MobilePhoneDoNotText { get; set; }
public string WorkPhone { get; set; }
public bool WorkPhoneDoNotLeaveMsg { get; set; }
}
public sealed class SubjectsMap : ClassMap<Subjects>
{
public SubjectsMap()
{
AutoMap(CultureInfo.InvariantCulture);
Map(m => m.Code).Name("Code");
Map(m => m.OrganizationId).Name("OrganizationId");
Map(m => m.PreferredName).Name("PreferredName");
Map(m => m.FirstName).Name("FirstName");
Map(m => m.MiddleName).Name("MiddleName");
Map(m => m.LastName).Name("LastName");
Map(m => m.DateOfBirth).Name("DateOfBirth");
Map(m => m.Gender).Name("Gender");
Map(m => m.LastNameInitial).Name("LastNameInitial");
Map(m => m.CodeDisplay).Name("CodeDisplay");
Map(m => m.RaceId).Name("RaceId");
Map(m => m.MaritalStatusId).Name("MaritalStatusId");
Map(m => m.StatusId).Name("StatusId");
Map(m => m.Rank).Name("Rank");
Map(m => m.Email).Name("Email");
Map(m => m.MobilePhone).Name("MobilePhone");
Map(m => m.MobilePhoneDoNotLeaveMsg).Name("MobilePhoneDoNotLeaveMsg");
Map(m => m.MobilePhoneDoNotText).Name("MobilePhoneDoNotText");
Map(m => m.WorkPhone).Name("WorkPhone");
Map(m => m.WorkPhoneDoNotLeaveMsg).Name("WorkPhoneDoNotLeaveMsg");
}
}
我有一个构造函数,它注入了我需要用于一些 getter 的加密方法,这些 getter 将加密 get 上的字符串。当我尝试将 CSV 读入类文件时:
public List<Subjects> ParseSubjectCSV(string inputFilePath)
{
using (var reader = new StreamReader(inputFilePath))
using (var csv = new CsvReader(reader, CultureInfo.InvariantCulture))
{
csv.Configuration.RegisterClassMap<SubjectsMap>();
csv.Configuration.HeaderValidated = null;
var records = csv.GetRecords<Subjects>().ToList();
return records;
}
}
我收到此错误:
名称为“加密”的字段不存在。您可以通过将 MissingFieldFound 设置为 null 来忽略缺失的字段。
所以我修改了我的代码,将 MissingFieldFound 添加为 null 并引发了错误:
无法进行转换 Text:'' MemberType: TypeConverter "CsvHelper.TypeConvertion.DefaultTypeConverter"。
如果我删除构造函数和依赖注入,那么 with 就可以了。可以使用 CSV 映射到具有构造函数的类吗?
【问题讨论】:
-
您同时使用
AutoMap并单独映射每个属性是否有原因?
标签: csvhelper