Mr *_*day -2 c# inheritance list activator
我将读取一个字符串输入,它将确定要创建的派生类的类型.然后,创建的对象将添加到基类对象列表中.
当我尝试将结果添加Activator.CreateInstance();到列表中时,我得到:
Cannot implicitly convert type 'object' to 'Namespace.Animal'. An explicit conversion exists (are you missing a cast?)
我得到了以下内容:
List<Animal> animals;
Type animal_type = Type.GetType(class_name); // eg lion, tiger
object new_animal = Activator.CreateInstance(animal_type);
animals.Add(new_animal);
Run Code Online (Sandbox Code Playgroud)
如何将新创建的对象添加到列表中?
正如错误所说,你需要一个明确的演员:
animals.Add( (Animal) new_animal);
Run Code Online (Sandbox Code Playgroud)
new_animal是类型的object.所以,new_animal几乎可以做任何事情.编译器需要您明确告诉它采取危险的步骤来假设它的类型Animal.它不会自己做出这个假设,因为它不能保证转换能够起作用.