【发布时间】:2020-06-22 03:01:04
【问题描述】:
我有两种方法可以返回 EmployeeCsv 和 CardCsv 列表。
public class EmployeeCsv
{
public string EmployeeId { get; set; }
public string EmployeeName { get; set; }
}
public class CardCsv
{
public string MaxCharge { get; set; }
public string MaxDiscount { get; set; }
}
public List<EmployeeCsv> GetEmployeeList() {} // returns list of EmployeeCsv
public List<CardCsv> GetCardList() {} // returns list of CardCsv
我想为这两种方法声明一个类型列表。 所以我像下面这样改变了它们
public interface ITest {}
public class EmployeeCsv : ITest
{
public string EmployeeId { get; set; }
public string EmployeeName { get; set; }
}
public class CardCsv : ITest
{
public string MaxCharge { get; set; }
public string MaxDiscount { get; set; }
}
public List<ITest> GetEmployeeList() {}
public List<ITest> GetCardList() {}
主要:
void main()
{
var records = new List<ITest>();
records = GetEmployeeList();
using (var writer = new StreamWriter(fileName))
using (var csv = new CsvWriter(writer, CultureInfo.InvariantCulture))
{
csv.Configuration.ShouldQuote = (field, context) => true;
csv.WriteRecords(records); // error here
}
}
在向这两个类添加接口后保存时出现错误。 我该如何解决这个问题?
【问题讨论】:
-
您没有因为任何特殊原因告诉我们错误信息吗?对大多数人来说,错误消息很有用
-
主题是错误信息。 CsvHelper.WriterException: '没有为类型 'ProjectName.ITest' 映射任何属性。'
-
CsvHelper 抱怨您的类型没有在
ITest上找到的列名称的属性。发布您的 csv 布局,它可能会有所帮助。大多数情况下,CSV 应该具有固定的列,因此您通过 ITest 组合两个 csv 的意图似乎令人困惑。 -
这就是 ITest 布局的全部内容。没有其他的。我添加它是因为我只想删除一种类型 List
().