У вас не может быть виртуальных полей, но вы можете иметь виртуальные свойства.
Кроме того, было бы неплохо объявить тип свойства для интерфейса IDictionary<TKey, TValue>
, а не для Dictionary<TKey, TValue>
конкретного типа, поскольку этот класс не предназначен для наследования.
например:
private readonly Dictionary<string, int> _myDictionary
= new Dictionary<string, int>();
protected virtual IDictionary<string, int> MyDictionary
{
get
{
return _myDictionary;
}
}
Подклассы не увидят поле; будет видна только собственность Они могут переопределить свойство и обеспечить собственную реализацию; например, возвращая экземпляр пользовательского типа, который реализует интерфейс.