0

我有A类:

public class ClassA<T>

我在 ClassA 中有一个通用方法:

protected TP FunctionA<TP>(Expression<Func<T, TP>> p)
{
    //Code for method here
}

ClassB 派生自 ClassA:

public class ClassB : ClassA<ClassB>

ClassC 派生自 ClassB:

public class ClassC : ClassB

当像上面的例子一样创建 ClassC 时,ClassA 仍然会有 ClassB 的类型,因为 ClassC 是从 ClassB 派生的,而 ClassB 将 ClassA 的类型设置为 ClassB。

我想知道的是如何从 ClassB 派生,同时将 ClassA 类型设置为 ClassC 并且 ClassB 仍然需要能够单独使用而无需派生。

谢谢!

4

1 回答 1

2

ClassB 不再是通用的。C类也不是。如果你想保持通用,那么模式是:

class ClassB<T> : ClassA<T> {}
class ClassC<T> : ClassB<T> {}
于 2012-10-13T23:10:00.480 回答