2010-07-20 7 views
5

클라이언트가 Excel 파일, CSV 또는 탭 구분 파일을 가져올 수있는 프로젝트가 있습니다. 이 파일은 SQLite 데이터베이스 테이블로 변환되는 데이터 테이블에로드됩니다. 강력하게 형식화 된 객체 대 datatables로 작업하는 것을 선호합니다. 이렇게 생성 된 데이터베이스 테이블을 리플렉션을 사용하여 강력한 형식의 클래스로 쉽게 변환 할 수있는 방법이 있습니까? 키커는 응용 프로그램에 가져온 파일이 항상 다른 형식 (즉, 다른 열)이므로 강력한 형식의 개체를 하드 코딩 할 수 없으며 항상 생성되어야합니다.데이터 테이블 또는 데이터베이스 테이블에서 클래스 생성

답변

0

Ryan은 이미 올바른 질문을 던졌고 강하게 입력 된 클래스의 유일한 이점은 런타임에 디자인이나 컴파일 타임에 있지만 런타임에서는 볼 수 없다는 것뿐입니다.

아마도이 테이블을 사용하는 다른 응용 프로그램에서 강력한 유형 클래스를 작성한 SQLlite 테이블을 만든 후에 원할 수도 있습니다.

이 경우 T4 - Text Template Transformation Toolkit을 살펴볼 수 있습니다. 쿼리에서 강력한 형식 클래스를 만들 수 있으므로 추가 응용 프로그램을 위해 컴파일 할 때이 클래스를 사용할 수 있습니다.

그러나 사용하기 전에 T4가 best kept Visual Studio secret 중 하나임을 알아야합니다. ;-)

4

이론적으로, 당신은 Reflection.Emit를 같은 것을 사용하여 어셈블리를 만들 수 있습니다, 또는 :

대한 추가 정보를 원하시면 다음 링크에서보세요 코드 파일을 생성하고 컴파일러를 호출하여 이러한 파일을 어셈블리로 빌드 할 수도 있습니다.

그러나이 방법이 유용할지 모르겠습니다. 이 테이블의 스키마가 런타임에 결정된다면 생성 된 클래스의 사용은 리플렉션을 사용하지 않고 추가 한 강력한 형식의 속성을 사용할 수 없으며이 시점에서 본질적으로 약점이 추가 된 성능 반향으로 타자를 치는 무언가. C# 4.0의 동적 유형은 성능 저하를 제거 할 수 있지만 실제 이점이 없어도 여전히 많은 복잡성을 추가하고 있습니다.

관련 문제