Java中的GenericSuperclass与C#之间的差异

时间:2017-08-11 10:52:14

标签: java c# .net-core

Java代码

public abstract class A<T extends AA> extends B
{
    public A()
    {
        Type type = this.getClass().getGenericSuperclass();

        ParameterizedType parametrizedType = (ParameterizedType) type;
        Type[] fieldArgTypes = parametrizedType.getActualTypeArguments();
        parameterType = (Class<T>) fieldArgTypes[0];
    }
 }

在C#.NET CORE中我写了这个:

public abstract class A<T> : B where T: class
{        
    public A()
    {
        Type type = GetType().GetGenericTypeDefinition();
        parameterType = type.GenericTypeArguments[0];
    }
}

但是当我运行程序时,我遇到了错误:This operation is only valid on generic types.我不知道如何解决这个问题。我想实现Java代码中的相同功能。

1 个答案:

答案 0 :(得分:0)

最后,我是关于this.getClass().getGenericSuperclass();的红色Java文档,它与泛型无关,C#代码可能是GetType().GetTypeInfo().BaseType。而现在效果很好。