gpt4 book ai didi

c# - 使用反射从 C# 中嵌套类型的 DeclaringType 获取泛型类型

转载 作者:行者123 更新时间:2023-12-02 15:45:27 24 4
gpt4 key购买 nike

假设我有以下类结构:

public class Outer<T>
{
public class Inner<U>
{
}
}

还有一些代码:

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

如何获取构造的泛型类型 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

所以你的情况中的一句话是:

testType.GetGenericArguments()[0]

关于c# - 使用反射从 C# 中嵌套类型的 DeclaringType 获取泛型类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55051292/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com