反射,泛型和多个装配

时间:2011-04-06 19:33:44

标签: c# generics reflection

我正试图解决这个问题:

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

其中Class1Class2位于不同的程序集中。

我可以解析程序集并找到Class1类型以及Class2类型,但如何进入Class1<Class2>类型?

2 个答案:

答案 0 :(得分: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>)

一样

答案 1 :(得分:1)

我认为,它应该是这样的:

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

注意:我将叛逆者从'更改为'并添加了泛型参数的数量。

如果这还不够,请尝试指定包括命名空间和汇编的类:

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