2010-12-15 49 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方法時都要複製字典,如果它是一個大型字典,可能需要一些時間。