2011-05-12 3 views
0

셀 컬렉션이 포함 된 워크 시트 클래스가있는 경우 C# 4에서는 서로 다른 셀을 포함 할 수있는 방식으로 셀을 구성하는 방법 래핑 된 유형 (int, bool, string 등)이면서 같은 컬렉션에 여전히 공존하고 있습니까?포함 된 데이터 형식과 관련하여 스프레드 시트 셀의 동적 동작을 모방하는 방법

public class Cell<T> 
{ 
    T CellValue {get;set;} 
} 

다음 컬렉션은 내가 복싱을 피하기 위해 원

T.

에 구체적으로해야 다음과 같이이었다, 그렇다면 내가 CellValue을 가지고 주위를 얻으려고 값 유형을 포함 할 수 있으므로 객체가됩니다.

내가 선택한 다른 유형의 옵션은 null을 반환하는 GetAsString(), GetAsInt() 등의 메서드를 정의하는 추상 기반에서 상속 받겠다는 각 유형의 특정 셀 유형을 갖는 것입니다. if 값 유형이 일치하거나 변환이 가능하며 nullable 값 유형 만 사용하십시오. 그렇다면 SetFromString (string val) 등을 써야합니다. 소비자가 항상 필요한 유형을 알 수 있기 때문에이 방법이 효과적 일 수 있습니다.하지만 다소 복잡해 보입니다.

다른 옵션이 있습니까?

답변

0

권투는 걱정거리 중 가장 적은 것입니다. 스프레드 시트는 거대한 프로젝트이며 최상의 설계 성능에서도 수식 및 참조와 같은 재 계산 오버 헤드가 셀 검색보다 제한 될 가능성이 훨씬 큽니다. 그러나 그것에 대해 생각하는 것이 좋습니다.

정말이 일을하고 싶다면 일반적인 접근법을 사용하고 싶지 않을 것입니다. 컴파일 시간 안전성에 도움이 될 것이기 때문입니다. 그렇지만 실행시에 커다란 switch 문을 만들 것입니다. 동적으로 일을하려고합니다. 대신 기본 클래스 Cell의 전통적인 객체 지향 접근 방식을 사용하고 NumberCellStringCell 클래스를 유도하고 확실하게 object 유형의 CellValue을 가져야합니다. CellType 속성을 추가 할 수도 있습니다. 너는 많은 선택권이있어.

는 또한 기존의 객체 지향 접근 방식은 유형 같은 반면에 등 공식 세포로, 어떤 사람들은 단지 하나의 Cell를 만들 수 있습니다 셀 값 이외에 세포 행동의 다른 종류를 추가 할 수 있습니다 수업을 듣고 모든 것을 그것에 밀어 넣는다.

관련 문제