2010-12-15 52 views
0

我想要一个Dictionary<string, string>属性,不应该由外部代码改变/设置。为了达到这个目的,我可以声明私有变量,它的属性只有get accessor。如何防止外部代码操作字典的内容?

例如

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";

我不想要任何外部代码来操纵字典的内容。我怎样才能做到这一点?

回答

1

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

如果这是您将要做的很多事情,您可以使用其他人的ReadOnlyDictionary实现(如果您使用Google,还有很多功能),或者您可以编写自己的代码。

1

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