次のコードがあるとします。
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); }
}
(ある程度期待される) 出力 "We have 2 bars, rejoice!" が得られます。
これは素晴らしいことです。ビールを飲む場所が 2 倍になりましたが (どうやら)、私が本当に必要としているのは、各クラスに独自のキャッシュを持たせることです。このキャッシュをサブクラスに実装したくない理由は、抽象クラスに、キャッシュを操作できる (つまり、それらすべてを反復する) 必要があるいくつかのメソッドがあるためです。これを行う方法はありますか?のインターフェイスの使用を検討しましたfoo
が、インターフェイスでは静的メンバーをインターフェイスの一部として定義することはできません。