忽略FileHelpers中的属性
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了忽略FileHelpers中的属性相关的知识,希望对你有一定的参考价值。
我使用FileHelpers将模型导出为CSV。它有一个[FieldNotInFile()]属性,在导出时排除字段,但我需要使用属性,因为我需要一些其他属性以及另一个仅使用属性的第三方库。
有没有办法让FileHelpers忽略属性?
答案
前几天我遇到了同样的问题并使用了[FieldHidden]
属性。像这样的东西:
[DelimitedRecord(" ")]
public class PolicyFileRecord
{
public string FileDate;
public int ProgramId;
public string LocationAddress1;
public string LocationAddress2;
public string LocationAddress3;
public string LocationCity;
public string LocationState;
public string LocationZip;
[FieldHidden]
public string LocationCountry;
}
另一答案
我通过给属性一个支持字段并将支持字段标记为[FieldHidden]
来实现此目的:
[DelimitedRecord(",")]
public class Record
{
public int Id;
public string Name;
public string SomeProperty
{
get { return someProperty; }
set { someProperty = value; }
}
[FieldHidden]
private string someProperty;
}
另一答案
从版本3.27开始,您可以在字段AND属性上使用[FieldHidden]。
另一答案
FileHelpers类只是使用有限的C#语法作为定义语言来定义平面文件规范的一种方法。因此,FileHelpers类是一种不常见的C#类,您不应该尝试以任何其他方式使用它们。将FileHelpers类视为CSV格式的“规范”。这应该是它唯一的作用。如果您需要更“正常”对象中的记录(在您的情况下,您需要属性而不是字段),那么将结果映射到更好的方式:
FileHelperEngine engine = new FileHelperEngine<FileHelpersOrder>();
var records = engine.ReadFile("FileIn.txt");
var niceOrders = records.Select(
x => new NiceOrder()
{ Number = x.Number,
Customer = x.Customer
// etc.
});
其中FileHelpersOrder
是您的CSV规范,NiceOrder
类将是一个适当的OOP类,其中包含必要的属性,方法等。
如果你是出口,那么你需要做相反的事情,即从FileHelpersOrder
的集合中选择NiceOrder
的集合。
以上是关于忽略FileHelpers中的属性的主要内容,如果未能解决你的问题,请参考以下文章
使用 C# 将 FileHelpers 数据排序到 SQl 服务器中的不同列中