2011-08-17 5 views
1

지정된 클래스를 도움이됩니다. 이 인스턴스를 가져 와서 행에 삽입하십시오.C#을 엔티티 행 창조

class RowHelper 
{ 
    public void List<string[]> Rows; 

    public RowHelper() 
    { 
     Rows = new List<string[]>(); 
    } 
    public void CreateRows(SomeClass[] SomeClasses) 
    { 
     foreach(SomeClass rowData in SomeClasses) 
     { 
      Rows.Add(rowData.ToStringArray()); 
     } 
    } 
} 

하지만 지금부터 다음 행 데이터 세트를 구분할 방법이 없습니다. RowHelper Member public int RowSize을 추가 할 수 있습니다. 그런 다음 소비자는 RowSize을 사용하여 행을 구문 분석해야합니다. 이게 가장 좋은 방법인가요?

MVC 프로젝트의 뷰 레이어에서 table tr에 삽입 할 수있는 행으로 객체를 전환하는 도우미 클래스를 만들고 있습니다.

답변

0

"다음 행 데이터 세트를 분리하려면"RowHelper와 행 사이에 중간 RowSet 클래스를 추가하기 만하면됩니다.

class RowSet 
{ 
    public void List<string[]> Rows = new List<string[]>(); 
} 

class RowHelper 
{ 
    public List<RowSet> RowSets; 

    public RowHelper() 
    { 
     RowSets = new List<RowSet>(); 
    } 

    public void CreateRows(SomeClass[] SomeClasses) 
    { 
     RowSet set = new RowSet(); 

     foreach(SomeClass rowData in SomeClasses) 
     { 
      set.Rows.Add(rowData.ToStringArray()); 
     } 

     RowSets.Add(set); 
    } 
} 

그래서, RowHelper는 RowSet 인스턴스의 집합 인 공용 속성이 있습니다.

RowSet에는 Rows의 목록이 있습니다.

CreateRows 메서드는 RowSet이라는 새 인스턴스를 만들고 행을 채우고 RowSets 속성에 추가 할 수 있습니다.

이제 RowHelper.RowSets을 반복 할 수 있으며 거기에서 RowSet.Rows을 반복 할 수 있습니다.

RowSet을 어떻게 구별 할 것인지 생각해보고 이에 따라 컬렉션 클래스를 선택하십시오. 예를 들어 순차적으로 액세스하기 만하면 List<RowSet>이 좋습니다.하지만 명명 된 색인을 사용하려면 Dictionary<string,RowSet>을 사용하십시오.

0

아마도 IComparableSomeClass에 구현할 수 있습니다.

해당 인터페이스를 구현하는 방법에 대한 예제가 많이 있습니다. David Hayden에 블로그가 있습니다.

class SomeClass : IComparable 
{ 
    ... 
} 
관련 문제