我今天正在进行一些代码审查,并遇到了一些开发人员编写的旧代码.它就是这样的
public abstract class BaseControl
{
internal abstract void DoSomething();
}
Run Code Online (Sandbox Code Playgroud)
如果在同一个程序集中有派生类,它就可以工作
public class DerivedControl : BaseControl
{
internal override void DoSomething()
{
}
}
Run Code Online (Sandbox Code Playgroud)
但是在不同的程序集中派生基类会产生编译时错误
DerivedControl does not implement inherited abstract member 'BaseControl.DoSomething()
Run Code Online (Sandbox Code Playgroud)
这让我思考.为什么有人会将方法声明为内部抽象?
为什么我不能从GridViewRowPresenterBase派生出来?
public class GridViewRowPresenterEx : GridViewRowPresenterBase
{
protected override void OnColumnPropertyChanged(GridViewColumn c, string s)
{
}
}
Run Code Online (Sandbox Code Playgroud)
我收到以下编译错误:
'GridViewRowPresenterEx'不实现继承的抽象成员System.Windows.Controls.Primitives.GridViewRowPresenterBase.OnColumnPropertyChanged(System.Windows.Controls.GridViewColumn,string)'
'GridViewRowPresenterEx.OnColumnPropertyChanged(System.Windows.Controls.GridViewColumn,string)':找不到合适的方法来覆盖