C#反射-从基类中获取父类的通用参数类型

马修斯·西蒙(Matheus Simon)

考虑以下类:

public class Super : Base<Test, Super>
{
    public Super Next { get; set; }
}

public class Base<TArg, TSuper>
{
    public Type GetTestArgument()
    {
        Type[] arguments = typeof(TSuper).GetProperty("Next").PropertyType.BaseType.GetGenericTypeDefinition().GetGenericArguments();
        // arguments is set to [ TArg, TSuper ] instead of [ Test, Super ]
        return arguments[0]; // should be Test
    }
}

有谁知道如何在不调用的情况下从基类中获取泛型类型,typeof(TArg)因为我将遍历其他超类属性,并且必须通过更深层的反射。

谢谢。

广州7

您有一个呼叫GetGenericTypeDefinition(),您可能不想要。即:

typeof(TSuper).GetProperty("Next").PropertyType.BaseType.GetGenericArguments()

typeof(TSuper).GetProperty("Next").PropertyType.BaseType返回类型Base<Test, Super>因此调用GetGenericArguments()它会返回[Test, Super]

调用GetGenericTypeDefinition()会给您Base<TArg, TSuper>,调用GetGenericArguments()会返回[TArg, TSuper]

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

C#使用反射获取通用参数名称

来自分类Dev

使用嵌套在通用类中的类作为C#中的类型参数

来自分类Dev

使用嵌套在通用类中的类作为C#中的类型参数

来自分类Dev

C#根据反射获取命名空间中的类的列表

来自分类Dev

带参数的C#反射发射调用

来自分类Dev

带参数c#错误的反射调用

来自分类Dev

C# 反射转换为变量类型

来自分类Dev

使用反射获取C#字段的值

来自分类Dev

使用反射C#的静态类中的调用方法

来自分类Dev

C#反射获取嵌套属性类型中GetValues的对象

来自分类Dev

实体框架C#中的反射

来自分类Dev

反射发射以覆盖 C# 中的 ToString()

来自分类Dev

如何使用 C# 反射获取实例化的属性或非 null 的类类型的属性

来自分类Dev

C#如何从基类的派生类中获取特定类型的所有字段?

来自分类Dev

C#反射,调用不同参数类型的方法

来自分类Dev

C#分解通用方法中的类型参数(如果它是嵌套类)

来自分类Dev

在C#中强制转换为未知类型的反射

来自分类Dev

在C#中强制转换为反射类型

来自分类Dev

在C#中强制转换为反射类型

来自分类Dev

通过C#中的反射获取接口的基本接口

来自分类Dev

在C#中获取属性值(反射)的最快方法

来自分类Dev

如何在C#中通过反射获取属性值

来自分类Dev

获取C#中的单个属性值的列表-反射

来自分类Dev

如何在C#反射中解决通用方法的歧义

来自分类Dev

C# - 通过反射从抽象类中的类变量调用函数

来自分类Dev

c# - 如何设置使用反射调用的参数的正确顺序?

来自分类Dev

C#反射-对象与目标类型不匹配

来自分类Dev

C#反射-获取没有字符串的PropertyInfo

来自分类Dev

通过反射C#获取嵌套的属性值

Related 相关文章

热门标签

归档