Как я могу запретить внешнему коду манипулировать содержимым словаря? - PullRequest
0 голосов
/ 15 декабря 2010

Я хочу Dictionary<string, string> свойство, которое не должно быть изменено / установлено внешним кодом. Чтобы добиться этого, я могу объявить приватную переменную и ее свойство только с помощью метода доступа get.

например.

private static Dictionary<string, string> myDic = new Dictionary <string, string>();
     Public static Dictionary<string, string> MyDictionary
     {
          get { return myDic;}
     }

Но в этом случае внешний код может манипулировать «содержимым» словаря. например MYClass.MyDictionary["FirstSampleKey"] = "Replacing original value by New Value";

Я не хочу, чтобы какой-либо внешний код манипулировал содержимым словаря. Как мне этого добиться?

Ответы [ 2 ]

1 голос
/ 15 декабря 2010

Я бы также сказал, что вы могли бы написать метод для разработчиков, чтобы искать их слова, или вы могли бы вернуть копию словаря, таким образом словарь работает так же, как и сейчас, но по причине вам придется копируйте словарь каждый раз, когда вызывается метод get, что может занять некоторое время, если это большой словарь.

1 голос
/ 15 декабря 2010

Я не верю, что есть словарь только для чтения (что было бы неплохо, так как существует коллекция ReadOnlyCollection).Лучше всего было бы вообще не раскрывать словарь и раскрывать свойства / методы, которые позволяют разработчику получать информацию, не позволяя им напрямую обращаться к словарю.

Если вы будете этим заниматьсяв большинстве случаев вы можете посмотреть либо на использование чужой реализации ReadOnlyDictionary (есть много, если вы ее используете в Google), либо вы можете написать свою собственную.

...