我想要做类似这样的事情:
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
集合。然而,我被告知静态类应该始终是无状态的——不应该使用它们来存储全局数据。总体而言,全局数据似乎备受诟病。如果我不应该使用静态类,那么正确的方法是什么?
注意:我找到了一个类似的问题,但给出的答案并不适用于我的情况。