我有一个包含三个键/值对的字典对象。我希望能够修改值,但我想阻止能够添加更多。有没有最好的方法来阻止添加新的键/值对?我只想隐藏Add方法。
答案 0 :(得分:9)
只需将字典封装在自定义类中,并且不提供添加方法。
话虽如此,如果总有三个值,我会考虑只使用一个具有三个属性而不是字典的类。如果密钥是固定的并且事先已知,则制作字典是没有意义的 - 三个属性将具有更简单,更不易出错的API并且更有效。
答案 1 :(得分:4)
创建一个禁止这些操作的包装类,然后在想要将密钥集设置为只读时将字典包装在实例中。 (例如,明确实现IDictionary<TKey, TValue>.Add()
并让它抛出NotSupportedException
。)
答案 2 :(得分:0)
隐藏几乎从来不是正确的事情(我假设通过&#34;隐藏&#34;你的意思是子类化并使用new
隐藏基类&#39;方法)。如果隐藏Add
方法并且消费者将对象强制转换回基类,他们将能够访问隐藏方法并向其添加项目。
正如其他人所建议的那样,这里最好的方法是创建一个封装IDictionary
的包装器,但不提供添加方法。