【发布时间】:2008-10-24 12:24:32
【问题描述】:
我有 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 的类,以某种方式与泛型方法一起使用?
这似乎是泛型被过度使用了,我同意。我正在尝试创建从单独项目中的亚音速数据对象派生的业务层对象。
注意:我在
【问题讨论】:
标签: c# generics subsonic constraints