0

我有两种类型的基类;

public abstract class Base
{
    public abstract object Work();
}

public abstract class AuthenticatedBase : Base
{
    public abstract object Work(T request);
}

经过身份验证的类做了一些额外的工作来事先检查登录。然后我有从两个基类扩展的不同类;

public class A : Base
{
    public override object Work()
    {
        // Work here
    }
}

public class B : AuthenticatedBase
{
    public override object Work(T request)
    {
        // Work here
    }
}

基本上,当我创建一个派生自 AuthenticatedBase 的新类 B 时,Visual Studio 说我需要从 Base 类实现 Work(),即使我在 AuthenticatedBase 中有一个替代实现,我正在覆盖,诚然使用不同的参数。我应该怎么做才能不必从继承类中的基类实现 Work() 方法?

4

2 回答 2

1

在 AuthenticatedBase 中实现无参数 Work 方法并使用“sealed”关键字阻止它显示在 AuthenticatedBase 的继承者上。

于 2012-08-04T14:02:12.610 回答
0

你必须实现它,没有办法绕过它。这就是多重​​继承派上用场的情况。

您可以使用组合,以便B引用A. 然后B.Work()可以调用A.Work()

或者,实现B.Work()它以调用B.Work(T). 或者甚至Base.Work()是一个具有基本实现的虚拟方法A

于 2012-08-04T13:59:28.347 回答