首先,我有这样的事情:
class Parent
{
int x;
public Parent(int _x)
{
x = _x
}
}
class Child1: Parent
{
int y;
public Child1(int _y):base(_y)
{
y=_y;
}
}
class Child2: Parent
{
int z;
public Child2(int _z):base(_z)
{
z=_z;
}
}
一个简单的父子层次结构。然后,我有一个实际上充满了 Child1 和 Child2 的列表。我想为列表中的每个对象制作副本,并且我想首先制作一个将作为副本的新项目。
但是,如果我这样做:
foreach(Parent p in list)
dictionaryOfCopies.Add(p, new Parent(p.x));
那么字典将充满Parent's,而不是Children1和Children2。有没有办法在不知道对象的特定类型的情况下调用被键入为其父类型的对象的构造函数?