如何防止外部代码操纵Dictionary的内容?

时间:2010-12-15 17:19:36

标签: c#-3.0 properties

我想要一个Dictionary<string, string>属性,不应该由外部代码更改/设置。为了实现这一点,我可以使用get访问器声明私有变量和它的属性。

e.g。

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 个答案:

答案 0 :(得分:1)

我不相信有一个只读字典(因为有一个ReadOnlyCollection会很好)。你最好的选择可能是不公开字典,并公开允许开发人员获取信息的属性/方法,而不允许他们直接访问字典。

如果这是你将要做的很多事情,你可以考虑使用别人的ReadOnlyDictionary实现(如果你谷歌它有很多),或者你可以自己编写。

答案 1 :(得分:1)

我还会说你可以为开发人员编写一个方法来查找他们的单词,否则你可以返回字典的副本,这样字典就像现在一样工作,但是因为你必须每次调用get方法时复制字典,如果它是一个大字典,可能需要一些时间。