Java与C#中的泛型超类之间的差异



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 代码相同的目标。

最后我红了关于this.getClass().getGenericSuperclass();的 Java 文档,它与泛型无关,C# 代码可以GetType().GetTypeInfo().BaseType。目前效果很好。

最新更新