忽略FileHelpers中的属性

时间:2015-01-26 16:32:21

标签: c# attributes filehelpers

我正在使用FileHelpers将模型导出为CSV。它有一个[FieldNotInFile()]属性,在导出时会排除字段,但是我需要使用属性,因为我需要其他一些属性以及另一个仅使用属性的第三方库。

有没有办法让FileHelpers忽略属性?

4 个答案:

答案 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的集合。