Если вы хотите сохранить обратную совместимость, вы не можете открыть словарь напрямую. Вместо этого вы можете реализовать индексатор в своем классе и поместить в него некоторые проверки, чтобы убедиться, что соответствующая логика запускается при обращении к одному из существующих свойств с использованием этого синтаксиса.
Если вы делаете это с индексатором, у вас есть возможность поместить существующие свойства в Словарь или просто оставить их как есть и вызвать их существующие методы получения и установки из метода получения / установки индексатора, когда соответствующая строка передается как ключ.
Индексатор может выглядеть примерно так:
public object this[string key] {
get {
if (key == "Config1") return this.Config1;
else return propBag[key];
}
set {
if (key == "Config1") this.Config1 = value;
else propBag[key] = value;
}
}
Конечно, вы можете добавить проверки, чтобы убедиться, что ключ существует в блоке else
, но это должно помочь вам начать работу.
Еще одна вещь, которую следует учитывать: изменение этого класса для добавления поведения мешка свойств, независимо от того, реализовано ли оно как общедоступный словарь или индексатор, приведет к изменению интерфейса класса. Таким образом, вам не нужно будет переписывать существующий код, но вам придется перекомпилировать его после изменения класса.