自动插入所有子课程'实例进入字典

时间:2014-06-05 20:50:38

标签: c# inheritance

我有一个包含许多子类的父类,我希望有一个包含所有已经初始化的子类的字典。

我找到了一种方法来获取子类的所有类类型,但我没有看到它对我有什么帮助。

在下面的例子中,我希望所有宠物都能自动进入字典,而无需初始化我将要制作的每只宠物。

class pet
{
    public static Dictionary<string, pet> pets = new Dictionary<string, pet>();
    protected string name;

    public pet(string name)
    {
        this.name = name;
        pets.Add(name,this);
    }
}

class dog : pet
{
    public dog():base("Dog")
    {
    }
}

class cat : pet
{
    public cat():base("Cat")
    {
    }
}

1 个答案:

答案 0 :(得分:0)

我不知道你是如何获得实例化所需的类型列表所以我将包括我做的方式,你可以从那里拿走它。下面的代码假设您要实例化的所有类,并且基类位于当前正在执行的程序集中。

foreach( Type type in Assembly.GetExecutingAssembly().GetTypes() )
{
    if( type.BaseType == typeof( pet ) )
    {
        pet aPet = Activator.CreateInstance( type ) as pet;
        // Now add aPet to your dictionary
    }
}