通过反射从C#中嵌套类型的DeclaringType获取泛型类型

通过反射从C#中嵌套类型的DeclaringType获取泛型类型,c#,.net,reflection,C#,.net,Reflection,假设我有以下班级结构: public class Outer<T> { public class Inner<U> { } } 公共类外部 { 公共阶级内部 { } } 还有一些代码: var testType = typeof(Outer<string>.Inner<int>); var testType=typeof(外部.内部); 如何从testType变量中获取构造的泛型类型typeof(Outer),或者泛

假设我有以下班级结构:

public class Outer<T>
{
    public class Inner<U>
    {
    }
}
公共类外部
{
公共阶级内部
{
}
}
还有一些代码:

var testType = typeof(Outer<string>.Inner<int>);
var testType=typeof(外部.内部);

如何从
testType
变量中获取构造的泛型类型
typeof(Outer)
,或者泛型
typeof(string)
的值?

很有趣-似乎外部类型的泛型参数被投影到内部类型:

var testType = typeof(Outer<string>.Inner<int>);              
var outerType = testType.DeclaringType;                       
var outerTypeGenericParam = outerType.GetGenericArguments();
var testTypeGenericParam = testType.GetGenericArguments();
Console.WriteLine(outerType);                                 // Test+Outer`1[T] 
Console.WriteLine(outerTypeGenericParam[0]);                  // T
Console.WriteLine(testTypeGenericParam[0]);                   // System.String
Console.WriteLine(testTypeGenericParam[1]);                   // System.Int32

您的意思是
testType.GetGenericArguments()[0]
testType.DeclaringType.GetGenericArguments()[0]
正在给我
typeof(T)
。无论哪种方式,都是好的捕捉:)@Shane。抢手货固定的。
testType.GetGenericArguments()[0]