以下の擬似C#コードを考える呼び出し場合に警告を生成する:(Work()
メソッドをオーバーライド)派生クラスがWork()
メソッドを呼び出すことは、この設計で防止/サブクラスがオーバーライド部材
public abstract class Worker
{
public void DoWork()
{
Prepare();
Work();
Cleanup();
}
protected abstract void Work();
}
、それが可能です直接。
私はどのようにサブクラスがこの呼び出しを行うか、または少なくともコンパイラの警告を生成しないようにするためのヒントを探しています。
なぜ私はこれをしたいですか? ワーカーは実際にWork()
を別のスレッドにディスパッチします。 DoWork()
はロックに注意します。
私は知っている、これは奇妙です。 Work()
は、DoMyWork()
へのメソッド呼び出しで構成され、そのオブジェクトはDoMyWork()
を別の場所に呼び出す可能性があります。それを傍受することは不可能です。
とにかく。私はその問題に関する考えを感謝します。
それは役に立ちますか? [これをチェックしてください](http://stackoverflow.com/questions/5274639/preventing-override-of-individual-methods-in-c-sharp) –
あなたは、(あなたのユースケースを脇に)それは統合失調症自身が実装するメソッドを実行するオブジェクト(抽象クラスの場合は、オーバーライドしないでメソッドを実装します)。私はユースケースについていくつかの時間を考えるだろうが、私はそれを達成する方法がないと確信している。 – dryman
代わりに 'Work'をイベントにすると考えましたか? – Eris