忽略FileHelpers中的属性

mcl*_*sen 6 c# filehelpers attributes

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

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

Red*_*Red 5

前几天我遇到了同样的问题,并使用了[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;
}
Run Code Online (Sandbox Code Playgroud)


sha*_*p00 1

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.
       });
Run Code Online (Sandbox Code Playgroud)

FileHelpersOrder您的 CSV 规范在哪里,NiceOrder该类将是一个适当的 OOP 类,具有必要的属性、方法等。

如果要导出,则需要执行相反的操作,FileHelpersOrder从 的集合中选择 的集合NiceOrder