2012-08-04 58 views
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 
    } 
} 

基本上,当我创建一个新的B类,从AuthenticatedBase派生,Visual Studio中说,我需要实现从基类工作(),即使我有AuthenticatedBase的替代实现,我重写,诚然具有不同的参数。我应该怎么做,以便我不必从继承类中的基类实现Work()方法?

+0

如果在'AuthenticatedBase'的子类中实现'Work()'没有意义,那么你的层次结构需要改变。 – Lee 2012-08-04 14:06:13

回答

0

你必须执行它,没有办法绕过它。这种情况下多重继承会派上用场。

您可以使用组合,以便BA有参考。然后B.Work()可以拨打A.Work()

或者,执行B.Work(),以便它调用B.Work(T)。甚至有Base.Work()是一个虚拟方法,其基本实现从A

1

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

相关问题