给定以下代码:
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
,但该接口不允许将静态成员定义为接口的一部分。