2014-11-08 2 views
0

SQL Server에 저장된 속성 및 필드 유형에 따라 런타임에 모델을 만들고 싶습니다.런타임에 클래스를 만들고 .NET에서 사용하십시오?

예를 들어 내가 테이블이

UserName varchar(50) not null, 
Password varchar(4) not null, 
IsAdmin bit not null 

테스트

라는 이름이 그래서 내가 런타임

public class Test 
{ 
    public string UserName{get;set;} 
    public string Password{get;set;} 
    public bool IsAdmin{get; set; } 
} 
+0

가장 쉬운 방법은 * PropertyBag * 구현 또는 * Decorator Pattern *을 사용하는 것입니다. 이 두 가지가 모두 귀하의 필요에 부적합한 이유가 있습니까? 그것은 수행 될 수 있지만 실제로 런타임에 코드를 컴파일하는 것이 훨씬 더 많은 작업입니다. –

+0

클래스를 정확히 사용하는 방법을 설명해 주시겠습니까? – svick

+0

첫 번째 창 사용자가 DB에서 테이블 필드를 선택한 다음 Sql 서버 및 다른 형식으로이 테이블을 생성 한 후 사용자가 모든 테이블의 목록을 표시하고 지정된 테이블의 모든 데이터를 표시 할 수 있으므로 기반으로 도메인 클래스를 만들어야합니다. 사용자가 테이블을 만들면 테이블의 데이터 목록을 바인딩하여 WPF App의 GridView를 통해 표시 할 수 있습니다. –

답변

0

당신이 할하려고하는 것은 복잡하고 오류가 발생하기 쉬운 둘 다에서이 모델을 만들어야합니다. 런타임에 코드를 생성하는 것은 보통 나쁜 아이디어입니다. 이러한 종류의 디자인은 대개 코드 기반, 아키텍처 및 디자인 구현에서보다 심층적 인 문제를 숨기 만합니다.

즉, .NET 4.0 이후 dynamicvariables을 선언 할 수 있습니다. 전체 클래스를 생성하는 대신 이러한 컬렉션 (목록 또는 사전)을 사용하여 저장할 수 있습니다.

+0

예. 동의합니다.하지만 내 솔루션에는 테이블이나 스키마가 없습니다. 내 Sql 스키마는 최종 사용자가 런타임에 작성하므로 i 내 모를 만들어야 해. 처음에는 최종 사용자가 SQL 스키마를 만들었습니다 ... –

+0

첫 번째 창에서 사용자가 DB에서 테이블 필드를 선택한 다음 SQL Server에서이 테이블을 만들고 다른 양식으로 사용자가 모든 테이블의 목록을 표시하고 모든 데이터를 표시 할 수 있습니다. 지정된 테이블에 대해 사용자가 만든 테이블을 기반으로 도메인 클래스를 만들어 테이블의 데이터 목록을 바인딩하여 WPF 응용 프로그램의 GridView를 통해 표시하는 등의 작업을해야합니다. –