2015-01-26 4 views
6

모델을 CSV로 내보내는 데 FileHelpers을 사용하고 있습니다. 그것은 내보낼 때 필드를 제외하는 [FieldNotInFile()] 특성을 가지고 있지만 속성으로 만 작동하는 다른 타사 라이브러리에서도 다른 특성을 필요로하므로 속성을 사용해야합니다.FileHelpers의 속성 무시

FileHelpers에서 속성을 무시하도록 할 수있는 방법이 있습니까?

답변

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 클래스가됩니다. 당신이 수출하는 경우

는, 당신은 반대를 할 즉, NiceOrder의 컬렉션 FileHelpersOrder의 컬렉션을 선택해야합니다.

4

전날 같은 문제가 있었는데 [FieldHidden] 속성을 사용했습니다. 이런 식으로 뭔가 :

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

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

    [FieldHidden] 
    private string someProperty; 
} 
0

나는이 재산에게지지 필드를주고 [FieldHidden]로 백업 필드를 표시하여 일을 가지고 필드 및 속성.

1

이 release3.27 때문에, 당신이 [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; 
}