Sha*_*ane 2 .net c# reflection
说我有以下类结构:
public class Outer<T>
{
public class Inner<U>
{
}
}
Run Code Online (Sandbox Code Playgroud)
和一些代码:
var testType = typeof(Outer<string>.Inner<int>);
Run Code Online (Sandbox Code Playgroud)
我如何从变量中获取构造的泛型类型typeof(Outer<string>)或泛型typeof(string)的testType值?
有趣的是-似乎外部类型的泛型参数被投影到内部类型:
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
Run Code Online (Sandbox Code Playgroud)
因此,您的情况是:
testType.GetGenericArguments()[0]
Run Code Online (Sandbox Code Playgroud)