我今天正在做一些代码审查,发现了一些开发人员编写的旧代码。事情是这样的
public abstract class BaseControl
{
internal abstract void DoSomething();
}
如果在同一个程序集中有一个派生类,它就可以工作
public class DerivedControl : BaseControl
{
internal override void DoSomething()
{
}
}
但是在不同的程序集中派生基类会产生编译时错误
DerivedControl does not implement inherited abstract member 'BaseControl.DoSomething()
这让我开始思考。为什么会有人将方法声明为内部抽象?
最佳答案
最初的程序员希望派生控件可供客户端代码使用。但是要防止客户端继承和乱用虚方法。这不是一个坏主意,通常很容易通过重写方法并执行诸如忘记调用基类方法之类的操作来破坏基类。
关于c# - 内部抽象方法。为什么会有人拥有它们?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2303591/