Я хотел бы сделать что-то вроде этого:
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.
}
Это позволило бы мне управлять глобальной коллекцией Foo
с где угодно. Однако мне сказали, что статические классы всегда должны быть без сохранения состояния - вы не должны использовать их для хранения глобальных данных. Глобальные данные в целом, похоже, осуждаются. Если я не должен использовать статический класс, как правильно решить эту проблему?
Примечание: я нашел похожий вопрос , но ответ, который я получил, на самом деле не применим в моем случае.