我有A类:
public class ClassA<T>
B 类派生自 A:
public class ClassB : ClassA<ClassB>
C类派生自B类:
public class ClassC : ClassB
现在我有一个带有约束的通用方法
public static T Method<T>() where T : ClassA<T>
好的,现在我想打电话:
ClassC c = Method<ClassC>();
但我得到编译错误说:
Type argument 'ClassC' does not inherit from or implement the constraint type 'ClassA<ClassC>.
然而,编译器将允许:
ClassB b = Method<ClassB>();
我的理解是,这失败了,因为ClassC
继承ClassA<ClassB>
而不是ClassA<ClassC>
我真正的问题是,是否可以创建一个派生自该类的类,该类ClassB
可以以某种方式与泛型方法一起使用?
这似乎泛型被过度使用,我同意。我正在尝试创建从单独项目中的亚音速数据对象派生的业务层对象。
注意:我在 < T > 中添加了额外的空格,否则它们会从问题中删除。