2012-09-05 5 views
3

런타임에 설정된 사용자 정의 유형의 목록을 작성하려고합니다. 이것이 어떻게 가능한지?유형 사용자 정의 유형 목록 작성

var type = typeof(string); 

var list = typeof(List<>); 
var listOfType = list.MakeGenericType(type); 

var instance = Activator.CreateInstance(listOfType); 
+1

왜 customType 대신 string을 추가하지 않습니까? –

+0

이 코드는 이해가되지 않습니다. 문자열 목록을 만드는 것처럼 보입니다. – Arran

+0

실제로 유형은 런타임에 설정됩니다. 예를 들면 다음과 같습니다. customType = someOtherVariable.GetType(); – Abdulla

답변

7

, 당신은 그렇게 할 반사를 사용해야합니다 : 여기

내 코드입니다 이. 제네릭 컬렉션은 컴파일 타임에 강력하게 형식화됩니다. 새로운 클래스를/codegen으로 생성하고 필요할 때 컴파일 할 수 있지만, 이는 매우 다른 문제입니다.

+0

'instance'변수는 데이터 유형이 var이므로 어떻게 목록으로 사용할 수 있습니까? – DrRiisTab

+1

@DrRiisTab -'var'은 데이터 유형이 아닙니다. 컴파일러가 정적 유형을 설정할 수있는 바로 가기입니다. 목록에서'instance'를 사용하려면 일반 오버로드를 사용해야합니다. https://msdn.microsoft.com/en-us/library/0hcyx2kd(v=vs.110).aspx –

-1

당신은 할 수 없습니다 일부 반영 유형의 일반적인 목록을 인스턴스화하려면

Type customType = typeof(string); // or someOtherVariable.GetType(); 

List<customType> ls = new List<customType>(); // Error: The type or namespace name `customType' could not be found 
+1

또는 , 당신은 반사를 사용할 수 있습니다. (나는이 답변을 downvote하지 않았지만 다른 사람이 한 이유라고 생각한다.) – phoog