你的意思是这样的:
class FooProcessor<T>
{
}
abstract class Foo<T>
{
protected abstract void Process(FooProcessor<T> processor);
}
class FooChild : Foo<FooChild>
{
protected override void Process(FooProcessor<FooChild> processor)
{
}
}
这将是更容易使用的界面来实现:
interface FooProcessor<T>
{
}
interface Foo<T>
{
void Process(FooProcessor<T> processor);
}
class FooChild : Foo<FooChild>
{
void Foo<FooChild>.Process(FooProcessor<FooChild> processor)
{
this.Process((FooProcessorFooChild)processor);
}
protected void Process(FooProcessorFooChild processor)
{
}
}
class FooProcessorFooChild : FooProcessor<FooChild>
{
}
在这种情况下,孩子CHASS签名是很奇怪.. –
我不认为它可能,因为Foo是通用的 - 没有非泛型的Foo类 –
@SergeyMetlov我已经看到过这种方法能够从基类型暴露强类型的派生类的引用,它总是感觉有点向后,坦白说我没有亲自需要使用这种方法。 –