2015-01-26 13 views
6

Sto utilizzando FileHelpers per l'esportazione di modelli in CSV. Ha un attributo [FieldNotInFile()] che esclude i campi durante l'esportazione, ma ho bisogno di usare le proprietà come ho bisogno di altri attributi e di un'altra libreria di terze parti che funziona solo con le proprietà.Ignorare le proprietà in FileHelpers

C'è un modo per far sì che FileHelpers ignori una proprietà?

risposta

0

Una classe FileHelpers è solo un modo per definire le specifiche di un file flat utilizzando una sintassi C# limitata come lingua di definizione. In quanto tale, le classi FileHelpers sono un tipo insolito di classe C# e non dovresti provare a usarle in altro modo. Pensa alla classe FileHelpers come alle "specifiche" del tuo formato CSV. Questo dovrebbe essere il suo unico ruolo. Se avete bisogno i record in un oggetto più 'normale' (nel tuo caso, è necessario proprietà invece di campi), quindi mappare i risultati a qualcosa di meglio in questo modo:

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. 
     }); 

Dove FileHelpersOrder è vostra specifica CSV e la La classe NiceOrder sarebbe una classe OOP appropriata con proprietà, metodi e così via, se necessario.

Se si esporta, allora avete bisogno di fare il contrario, vale a dire , selezionare una raccolta di FileHelpersOrder da una collezione di NiceOrder.

4

Ho avuto lo stesso problema l'altro giorno e ho utilizzato l'attributo [FieldHidden]. Qualcosa di simile a questo:

[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; 
} 
0

ho avuto questo lavoro, dando la proprietà un campo di supporto e che segna il campo di supporto come [FieldHidden]:

[DelimitedRecord(",")] 
public class Record 
{ 
    public int Id; 
    public string Name; 

    public string SomeProperty 
    { 
     get { return someProperty; } 
     set { someProperty = value; } 
    } 

    [FieldHidden] 
    private string someProperty; 
} 
1

Dal release3.27, è possibile usare [FieldHidden] su campi E proprietà.

Problemi correlati