次のものが必要であることがよくあります。
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 */ }
}
これはかなり面倒です。インターフェースに何かを追加するたびに、抽象クラスでそれをスタブする必要があります。それは世界の終わりではありませんが、ここで次善の策を講じているかどうか興味があります - ここでコードの共有ビットの部分的な機能を取得するより良い方法はありますか?