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代码中的相同功能。
答案 0 :(得分:0)
最后,我是关于this.getClass().getGenericSuperclass();
的红色Java文档,它与泛型无关,C#代码可能是GetType().GetTypeInfo().BaseType
。而现在效果很好。