我经常发现我需要以下内容:
public interface IMyThing
{
void Function1();
void Function2();
void Function3();
void Function4();
void Function5();
}
public abstract class BaseMyThing : IMyThing
{
// Implement a version of Function1, but Function 2-5 is up to the concrete class to do
public void Function1()
{
// Do stuff.
}
public virtual void Function2();
public virtual void Function3();
public virtual void Function4();
public virtual void Function5();
}
public class ConcreteMyThing : BaseMyThing, IMyThing
{
public new void Function2() { /* something */ }
public new void Function3() { /* something */ }
public new void Function4() { /* something */ }
public new void Function5() { /* something */ }
}
这变得相当烦人 - 每次我向接口添加一些东西时,我都必须在抽象类中存根它。这不是世界末日,但我很好奇我是否在这里做一些次优的事情 - 有没有更好的方法来获得共享代码位的部分功能?