私は特別なタイプの辞書を持っています。私はまさにこれを実行するかどうかはわかりませんが、私はgetメソッドは、仮想作るために探していますが、ない設定方法:C#Indexerプロパティ - getメソッドとsetメソッドを仮想化する方法はありますか?
public TValue this[TKey key]
{
get { ... }
set { ... }
}
ことが可能と正しい組み合わせはそう何である場合ですか?
protected virtual TValue GetValue(TKey key) { ...}
public TValue this[TKey key]
{
get { return GetValue(key); }
set { ... }
}
:辞書のインデックス付きプロパティを使用すると、次の操作を行うことができ、その場合には)ので、あなたがその動作をオーバーライドすることはできません仮想ではありませんゲッターだけを「仮想」にしますか?それを行うためのより良い方法があるかもしれません。 –
私の "ReadOnlyDictionary"を拡張できるようにしようとしています。これは読み取り専用の辞書なのでsetメソッドはサポートされていません(例外がスローされます)。しかし、拡張クラスはgetメソッドから追加の作業を行いたいので、オーバーライドして変更することができます。 –
"get"メソッドを仮想化しようとするよりも、代わりにいくつかの仮想 "OnGetCalled"メソッドを持ち、それを上書きする派生クラスにするべきではありません。派生クラスはBaseバージョンを呼び出さずに "get"(つまりMarkの提案によって)をオーバーライドすることができないので、別のメソッドはコントラクトを明示的にします。 –