2011-04-06 5 views
0

나는이 문제를 해결하기 위해 노력하고있어 :반사, 제네릭 여러 어셈블리

Type.GetType("Class1'[[Class2]]")

Class1Class2 다른 어셈블리에 있습니다.

Class2 형식뿐만 아니라 Class1 형식도 찾을 수 있지만 Class1<Class2> 형식은 어떻게 만듭니 까?

Type.GetType("Class1`1[Class2]"); 

참고 :

+0

문자열로 형식을 가져 오는 이유는 무엇입니까? 해당 어셈블리의 내부 클래스입니까? –

답변

1

는 나는 다음과 같아야합니다, 생각 나는에` '에서 apostroph 변경 및 일반 인수의 수를 추가했다.

이 충분하지 않은 경우, 네임 스페이스와 어셈블리를 포함하는 클래스를 지정하십시오 : 당신이 유형을 찾아 낼 수있는 경우에

Type.GetType("Namespace1.Class1`1[[Namespace2.Class2, Assembly2]], Assembly1"); 
+0

MakeGenericType() 솔루션은 훨씬 더 우아합니다. –

2

모두 당신은해야합니다

Type class1Type = assembly1.GetType("Class1"); //or however you are able to get this type 
Type class2Type = assembly2.GetType("Class2"); //or however you are able to get this type 
Type genericType = class1Type.MakeGenericType(class2Type); 

genericType가있는 같이 될 것입니다 typeof(Class1<Class2>)

+0

Perfect, 그게 내가 찾고있는 완벽한 것입니다! 감사! – Thomas

+0

을 문제의 해결책으로 표시하면 다른 사용자가 묻지 않고도 답변을 찾을 수 있습니다. –

+0

이 답변은 정확하다고 표시되기에 충분하지 않았습니까? – Ric