런타임에 설정된 사용자 정의 유형의 목록을 작성하려고합니다. 이것이 어떻게 가능한지?유형 사용자 정의 유형 목록 작성
var type = typeof(string);
var list = typeof(List<>);
var listOfType = list.MakeGenericType(type);
var instance = Activator.CreateInstance(listOfType);
런타임에 설정된 사용자 정의 유형의 목록을 작성하려고합니다. 이것이 어떻게 가능한지?유형 사용자 정의 유형 목록 작성
var type = typeof(string);
var list = typeof(List<>);
var listOfType = list.MakeGenericType(type);
var instance = Activator.CreateInstance(listOfType);
, 당신은 그렇게 할 반사를 사용해야합니다 : 여기
내 코드입니다 이. 제네릭 컬렉션은 컴파일 타임에 강력하게 형식화됩니다. 새로운 클래스를/codegen으로 생성하고 필요할 때 컴파일 할 수 있지만, 이는 매우 다른 문제입니다.'instance'변수는 데이터 유형이 var이므로 어떻게 목록으로 사용할 수 있습니까? – DrRiisTab
@DrRiisTab -'var'은 데이터 유형이 아닙니다. 컴파일러가 정적 유형을 설정할 수있는 바로 가기입니다. 목록에서'instance'를 사용하려면 일반 오버로드를 사용해야합니다. https://msdn.microsoft.com/en-us/library/0hcyx2kd(v=vs.110).aspx –
당신은 할 수 없습니다 일부 반영 유형의 일반적인 목록을 인스턴스화하려면
Type customType = typeof(string); // or someOtherVariable.GetType();
List<customType> ls = new List<customType>(); // Error: The type or namespace name `customType' could not be found
또는 , 당신은 반사를 사용할 수 있습니다. (나는이 답변을 downvote하지 않았지만 다른 사람이 한 이유라고 생각한다.) – phoog
왜 customType 대신 string을 추가하지 않습니까? –
이 코드는 이해가되지 않습니다. 문자열 목록을 만드는 것처럼 보입니다. – Arran
실제로 유형은 런타임에 설정됩니다. 예를 들면 다음과 같습니다. customType = someOtherVariable.GetType(); – Abdulla