给定以下代码:
using System.Collections.Generic;
static class Program {
static void Main() {
bar Bar = new bar();
baz Baz = new baz();
System.Console.WriteLine(
"We have {0} bars, rejoice!", bar.Cache.Count);
}
}
public abstract class foo {
public static List<foo> Cache = new List<foo>();
}
public class bar : foo {
public bar() { Cache.Add(this); }
}
public class baz : foo {
public baz() { Cache.Add(this); }
}
你会得到(有点意料之中的)输出:“我们有2个酒吧,欢呼吧!”。这很棒,现在我们有了两倍的地方可以喝啤酒(显然),但我真正想要的是每个类都有自己的缓存。我不想只是在子类中实现这个缓存,因为我还有一些在抽象类中需要能够操作缓存的方法(即迭代所有缓存)。有没有办法做到这一点?我已经尝试使用接口来定义foo,但接口不允许将静态成员定义为接口的一部分。