使用抽象类创建复制构造函数

Mic*_*ael 4 c# oop

我正在尝试复制一个对象,然后对其进行修改,而不更改原始对象。相关的类有:

abstract class Upgrade {}

class Shield: Upgrade
{
  public Shield(Shield a) {}
}
Run Code Online (Sandbox Code Playgroud)

问题是当另一个类想要获取“升级”对象但该类不知道它获取哪个对象时。例如:

public void AddUpgrade(Upgrade upgrade)
{
    for (int i = 0;i<Aliens.Count; i++)
    {
        Aliens[i].AddUpgrade(What should i put here?);
    }
}
Run Code Online (Sandbox Code Playgroud)

我必须使用复制构造函数,因为我不希望所有外星人共享相同的升级引用,但升级是一个抽象类,那么我应该做什么?

Rom*_*jev 6

您可以使其Upgrade可克隆,即添加Clone()到它(每个后代都会实现),它将变成类似:

Aliens[i].AddUpgrade(upgrade.Clone());
Run Code Online (Sandbox Code Playgroud)