首页 > 解决方案 > 在 C# 中,有没有办法实现抽象类,以便使用提供的第一个参数自动调用基本构造函数?

问题描述

我有一个名为 Unit 的抽象基类。我可能想要数十或数百个 Unit 实现。这是 Unit 精简后仅显示构造函数:

public abstract class Unit {
   public Unit(string unitName, Unit parentUnit,Transform parentTransform,Vector3 position,Quaternion rotation){
      //Do stuff with the parameters
   }
}

这是一个带有一个额外参数(factorySize)的实现(Factory):

public abstract class Factory : Unit{
   public Factory(string unitName, Unit parentUnit,Transform parentTransform,Vector3 position,Quaternion rotation, float factorySize) : base(unitName,parentUnit,parentTransform,position,rotation){
      //Do stuff with factorySize
   }
}

但是,如果我有数百种这样的实现,并且如果我想更改基类参数列表,我必须进入并为每个实现更改很长的构造函数行,以便它与基类参数列表匹配!

public SomeUnitType(string unitName, Unit parentUnit,Transform parentTransform,Vector3 position,Quaternion rotation, float factorySize) : base(unitName,parentUnit,parentTransform,position,rotation)

有没有更好的方法来做到这一点,所以我不需要手动告诉构造函数将这些第一个参数传递给基本构造函数?

标签: c#

解决方案


如果您使用的是最新版本的 Visual Studio 2019,则可以自动生成构造函数,然后添加新参数。

  1. 右键单击基类Unit并点击“快速操作和重构...”。 步骤1

  2. 单击“生成构造函数”。 第2步

从那里,您可以使用所需的参数简单地调整新生成的构造函数。


推荐阅读