如何最好地防止向字典添加内容

时间:2013-04-30 22:25:49

标签: c#

我有一个包含三个键/值对的字典对象。我希望能够修改值,但我想阻止能够添加更多。有没有最好的方法来阻止添加新的键/值对?我只想隐藏Add方法。

3 个答案:

答案 0 :(得分:9)

只需将字典封装在自定义类中,并且不提供添加方法。

话虽如此,如果总有三个值,我会考虑只使用一个具有三个属性而不是字典的类。如果密钥是固定的并且事先已知,则制作字典是没有意义的 - 三个属性将具有更简单,更不易出错的API并且更有效。

答案 1 :(得分:4)

创建一个禁止这些操作的包装类,然后在想要将密钥集设置为只读时将字典包装在实例中。 (例如,明确实现IDictionary<TKey, TValue>.Add()并让它抛出NotSupportedException。)

答案 2 :(得分:0)

隐藏几乎从来不是正确的事情(我假设通过&#34;隐藏&#34;你的意思是子类化并使用new隐藏基类&#39;方法)。如果隐藏Add方法并且消费者将对象强制转换回基类,他们将能够访问隐藏方法并向其添加项目。

正如其他人所建议的那样,这里最好的方法是创建一个封装IDictionary的包装器,但不提供添加方法。