me gustaría hacer algo como esto:¿Es una mala práctica tener estado en una clase estática?
public class Foo {
// Probably really a Guid, but I'm using a string here for simplicity's sake.
string Id { get; set; }
int Data { get; set; }
public Foo (int data) {
...
}
...
}
public static class FooManager {
Dictionary<string, Foo> foos = new Dictionary<string, Foo>();
public static Foo Get (string id) {
return foos [id];
}
public static Foo Add (int data) {
Foo foo = new Foo (data);
foos.Add (foo.Id, foo);
return foo;
}
public static bool Remove (string id) {
return foos.Remove (id);
}
...
// Other members, perhaps events for when Foos are added or removed, etc.
}
Esto me permitiría gestionar la recolección mundial de Foo
s desde cualquier lugar. Sin embargo, me han dicho que las clases estáticas siempre deben ser sin estado, no debe usarlas para almacenar datos globales. La información global en general parece estar mal vista. Si no debería usar una clase estática, ¿cuál es la forma correcta de abordar este problema?
Nota: Encontré un similar question, pero la respuesta dada no se aplica realmente en mi caso.
Sí, todos deberíamos usar más variables globales y gotos ... – Lucas
Úselo cuando sea necesario, pero sea inteligente para evitar problemas. Más tarde sé ágil para moverte a algo mejor. –