2008-11-04 4 views
4

내 FileHelpers 매핑 클래스의 한 요소를 특정 길이의 배열로 허용하는 방법을 찾고 있습니다.FileHelpers 매핑 클래스의 배열 사용

는 예를 들어, 나는 수업이 같이 있습니다

[DelimitedRecord(",")] 
public class Example 
{ 
    public string code; 
    public int month; 
    public int day; 
    public double h1; 
    public double h2; 
    public double h3; 
    public double h4; 
} 

값의 H1-H4 정말 단순히 '시간'이라는 배열로 더 의미가있다. 파일 처리가 조금 더 쉬울 수도 있습니다. 나는 또한 내가 읽고있는 파일에는 항상 이것들이 있고, 이것들의 필드는 항상 그 안에 있다는 것을 안다.

FileHelper 매핑 클래스에 배열을 포함하는 방법을 알아 낸 사람이 있습니까?

답변

0

문제의 도구에 대해서는 알지 못하지만 도구의 제한 사항이 아니라고 가정하면 정말은 공개 입력란의 지혜를 의심합니다. 이 도구는이 기능을 지원한다면 나는 아무 생각이 없지만, 그것을 구현 가능한 방법이 될 것입니다 - 다시

[DelimitedRecord(",")] 
public class Example 
{ 
    public string Code {get;set;} 
    public int Month {get;set;} 
    public int Day {get;set;} 

    private readonly double[] h = new double[4]; 

    public double H1 {get {return h[0];} set {h[0] = value;}} 
    public double H2 {get {return h[1];} set {h[1] = value;}} 
    public double H3 {get {return h[2];} set {h[2] = value;}} 
    public double H4 {get {return h[3];} set {h[3] = value;}} 
} 

: 속성은 또한 당신에게 값을 심은 할 수있는 기회를 제공한다. 물론, "H"값은 단지뿐만 아니라하지 않을 것이다 (실제로는 약간 더 효율적인 - 어떤 배열을 힙없이 드 참조에) 직접 구성원으로서 :

public double H1 {get;set;} 
    public double H2 {get;set;} 
    public double H3 {get;set;} 
    public double H4 {get;set;} 
1

FileHelpers 기록 클래스 공용 필드가 필요합니다. 레코드 클래스는 최상의 코딩 방법을 따라야하는 일반적인 C# 클래스로 간주되어서는 안됩니다. 오히려 이것은 가져 오기 파일의 구조를 설명하기위한 구문 일뿐입니다.

FileHelpers에서 권장하는 절차는 결과로 나타나는 Example[] 배열을 반복하고 필요한 필드를 공개 필드 대신 속성이있는보다 일반적인 클래스로 매핑하는 것입니다. 이제 H1-H4 값을 배열 속성에 복사 할 수 있습니다.