Mam specjalny typ słownika. Nie jestem pewien jak to zrobić dokładnie, ale szukam, aby metoda get wirtualne, ale nie metoda set:C# Właściwości indeksatora - Jakikolwiek sposób wirtualizacji get a nie ustawionej metody?
public TValue this[TKey key]
{
get { ... }
set { ... }
}
Czy to możliwe, a jeśli tak, jaka jest prawidłowa kombinacja?
Co chcesz osiągnąć przez tworząc tylko getter 'virtual'? Może być lepszy sposób na zrobienie tego. –
Po prostu próbuję umożliwić rozszerzenie mojej "ReadOnlyDictionary". Ponieważ jest to słownik tylko do odczytu, nie obsługuję metody set (zgłasza wyjątek), ale rozszerzająca się klasa może chcieć wykonać dodatkową pracę z metody get, więc może ją przesłonić i zmodyfikować. –
Niż nie powinieneś próbować uczynić metodę "get" wirtualną, ale zamiast tego masz wirtualną metodę "OnGetCalled" i pozwól klasie pochodnej ją zastąpić. Klasa pochodna nie będzie w stanie zastąpić "dostać" (tj. Według sugestii Marka) bez wywoływania wersji Base, więc oddzielna metoda spowoduje wyraźne zawarcie umowy. –