我正在使用FileHelpers将模型导出为CSV。它有一个[FieldNotInFile()]属性,在导出时会排除字段,但是我需要使用属性,因为我需要其他一些属性以及另一个仅使用属性的第三方库。
有没有办法让FileHelpers忽略属性?
答案 0 :(得分:4)
前几天我遇到了同样的问题并使用了[FieldHidden]
属性。像这样:
[DelimitedRecord("\t")]
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;
}
答案 1 :(得分:1)
我通过为属性提供支持字段并将支持字段标记为<repositories>
来实现此目的:
<repository>
答案 2 :(得分:1)
从版本3.27开始,您可以在字段AND属性上使用[FieldHidden]。
答案 3 :(得分:0)
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
的集合。