Tengo una clase en C# que contiene un diccionario, que quiero crear y asegurar que nada se agregue, edite o elimine de este diccionario mientras exista la clase que lo contiene.Diccionario const en C#
Readonly realmente no ayuda, una vez que probé y vi que puedo agregar elementos después. Solo por ejemplo, creé un ejemplo:
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);
}
}
Quiero que el método Agregar no funcione. Si es posible, quiero que ni siquiera compile. ¿Alguna sugerencia?
En realidad, me preocupa que el código esté abierto para muchas personas. Entonces, incluso si oculto el método Agregar, será posible que alguien cree "inocentemente" un método que agregue una clave, o elimine otra. Quiero que las personas miren y sepan que no deberían cambiar el diccionario de ninguna manera. Justo como tengo con una variable const.
Los requisitos extraños sugieren que su diseño tiene problemas. Es posible que desee volver a pensar lo que está intentando aquí. De lo contrario, puede crear fácilmente su propia implementación que hace esto. – Will
Puede implementar su propio diccionario. Pregunta similar: http://stackoverflow.com/questions/35002/does-c-have-a-way-of-giving-me-an-immutable-dictionary –