次のシナリオがあります。
class Cow : Animal
{
public int animalID;
private static Cow instance;
public static Cow Instance
{
get
{
if (instance == null) instance = new Cow();
return instance;
}
}
private Cow() { }
}
Cow
から継承する通常のシングルトンですAnimal
。必要なもの: Dictionary<int, Animal>
type から継承するすべてのシングルトンでAnimal
、a) リストは最初にすべての既存のシングルトンで埋められます [既にインスタンス化されています]、および b) まだインスタンス化されていない辞書項目に追加するメソッド。
実装されたクラスのCow、Goat、およびZebraの場合、その動作が必要です:
public class Cow : Animal { ... }
public class Goat : Animal { ... }
public class Zebra : Animal { ... }
public static class AnimalManagement
{
static Dictionary<int, Animal> zoo = new Dictionary<int, Animal>();
static void FillDictionary();
static Animal GetAnimalID(int animalID);
}
public Main()
{
var a1 = Cow.Instance;
var a2 = Goat.Instance;
AnimalManagement.FillDictionary();
// Now, zoo.Count() == 2
// Suppose I seeking for Zebra, with animalID == 5:
Animal zebra = AnimalManagement.GetAnimalID(5);
// Thus, zoo.Count() == 3 and zeebra singleton was
// instantiated and added to internal dic of AnimalManagement.
}
そのため、リフレクションによって実行時に辞書を埋めたいと思います。私の友達は可能ですか?
前もって感謝します!