假设我有以下类结构:
公共类Outer< T>{ 公共类Inner< U> { }}还有一些代码:
var testType = typeof(Outer< string> .Inner< int>);…
有趣的是 - 似乎外部类型的泛型参数被投射到内部类型:
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]