2013-06-03 1 views
2

제목이 모든 것을 말해,하지만 여기가은 Assembly.LoadFrom이()에서 목록 <T>에 사용하기 위해 손님 유형을 만들

Assembly a = Assembly.LoadFrom(trustMeThePathIsRight); 
Type test = a.GetType("Full.Path.Of.Desired.Type"); 
List<test> blah = new List<test>; 

의 모양에 대한 몇 가지 예제 코드입니다하지만이 유형 말한다 또는 네임 스페이스를 찾을 수 없습니다. 본질적으로 어셈블리 참조를 만들 때 얻은 형식을 사용하려면 어떻게해야합니까?

+1

"유형을 모름"코드를 작성할 때마다 항상 * 동적 * 키워드를 생각해야합니다. 'List '이 여기에 적합합니다. 당신과 플러그인이 모두 알고있는 별도의 어셈블리에 * 인터페이스 *를 정의하면 더 좋습니다. –

답변

5

간단히 말해서 그런 식으로는 사용할 수 없습니다. 형식 매개 변수는 컴파일 타임에 지정해야 컴파일 타임에 알려야합니다. 유일한 대안은 반사 사용하는 것입니다 : 물론

Assembly a = Assembly.LoadFrom(trustMeThePathIsRight); 
Type test = a.GetType("Full.Path.Of.Desired.Type"); 
Type listType = typeof(List<>).CreateGenericType(test); 
IList blah = (IList)Activator.CreateInstance(listType); 

여기에 문제가 유형이 아직 알려지지 않은 것입니다을, 그래서 당신은 컴파일시 타입 체킹을받지 않습니다.

관련 문제