У меня есть класс в C#, который содержит словарь, который я хочу создать и не гарантировать ничего, как добавленный, отредактированный или удаленный из этого словаря, если класс, который содержит его, существует.const Словарь в C#
readonly действительно не помогает, как только я протестировал и увидел, что я могу добавить элементы после. Например, я привел пример:
public class DictContainer
{
private readonly Dictionary<int, int> myDictionary;
public DictContainer()
{
myDictionary = GetDictionary();
}
private Dictionary<int, int> GetDictionary()
{
Dictionary<int, int> myDictionary = new Dictionary<int, int>();
myDictionary.Add(1, 2);
myDictionary.Add(2, 4);
myDictionary.Add(3, 6);
return myDictionary;
}
public void Add(int key, int value)
{
myDictionary.Add(key, value);
}
}
Я хочу, чтобы метод Add не работал. Если возможно, я хочу, чтобы он даже не компилировался. Какие-либо предложения?
На самом деле, я беспокоюсь за то, что это код, который будет открыт для многих людей. Таким образом, даже если я скрою метод Add, кто-то сможет «невинно» создать метод, который добавит ключ, или удалить другой. Я хочу, чтобы люди смотрели и знали, что они не должны менять словарь каким-либо образом. Точно так же, как у меня есть переменная const.
Странные требования предполагают, что у вашего дизайна есть проблемы. Возможно, вам захочется переосмыслить, что вы пытаетесь здесь сделать. В противном случае вы можете легко создать свою собственную реализацию, которая сделает это. – Will
Вы можете реализовать свой собственный словарь. Аналогичный вопрос: http://stackoverflow.com/questions/35002/does-c-have-a-way-of-giving-me-an-immutable-dictionary –