2013-04-30 72 views
3

我有一個帶有三個鍵/值對的字典對象。我希望這些值能夠被修改,但我想阻止能夠添加更多。有沒有最好的方法來防止添加新的鍵/值對?我正在考慮隱藏Add方法。如何最好地防止將內容添加到字典中

+0

是否有你需要它是一個詞典的原因? – 2013-04-30 22:37:24

回答

9

只是將字典封裝在自定義類中,並且不提供添加方法。這就是說,如果總是隻有三個值,我會考慮只使用具有三個屬性的類而不是字典。如果密鑰是固定的並且事先知道的話,那麼製作字典沒有意義 - 三個屬性將具有更簡單,更不易出錯的API並且更高效。

+0

如果只有3個值,建議不使用字典。 – Dan 2013-04-30 22:28:50

+0

在這種情況下,有三個,但在其他情況下可能有四個,五個或兩個。即報告生成工具,每個報告部分都有固定數量的小節。所以我想到了一個接口IReportSection,每個擴展它的類都會使用字典,但是會有不同的條目。 – appsecguy 2013-05-01 13:50:07

+0

@ pendraggon87您可以隨時使界面或類提供索引器(http://msdn.microsoft.com/en-us/library/vstudio/6x16t2tx.aspx),而不是實際使用Dictionary。由於每個班級都有一個固定的#(但很多),該字典是不是真的有必要... – 2013-05-01 15:46:10

4

創建一個封裝類,禁止這些操作,然後將您的字典包裝在實例中,只要您想使密鑰集成爲只讀。 (例如,明確實施IDictionary<TKey, TValue>.Add()並使其丟掉NotSupportedException。)

0

隱藏幾乎從來都不是正確的事情(我認爲通過「隱藏」你的意思是繼承和使用new來隱藏基類的方法)。如果您隱藏Add方法並且消費者將對象強制轉換回基類,則它們將能夠訪問隱藏的方法並向其中添加項目。

正如其他人所說的,這裏最好的方法是創建一個包裝IDictionary並且不提供添加方式的包裝。

相關問題