【问题标题】:How to call parameterised base class constructor from parameterless derived class?如何从无参数派生类调用参数化基类构造函数?
【发布时间】:2015-07-28 10:16:11
【问题描述】:

我的基类不包含无参数构造函数。

所以我通常可以像这样调用基类构造函数:

public ItemFoldersForm(FormConstructor constuctorOptions): base(constuctorOptions.WindowTitle, constuctorOptions.TabName, constuctorOptions.TabButton)
      {

      }

所有这些都是非常标准的,但为了便于重用,我希望在派生类中有一个无参数构造函数。这是因为构造函数选项基于随机生成器。

类似这样的:

public ItemFoldersForm()
      {
         var constructorOptions = ConstructorOptions.GetRandomConstructorOptions();
         base: // what to do here....
      } 

这个概念可以用 c# 实现吗?

【问题讨论】:

    标签: c#


    【解决方案1】:

    你可以定义两个构造函数:

    public ItemFoldersForm(FormConstructor constuctorOptions) : base(constuctorOptions.WindowTitle, constuctorOptions.TabName, constuctorOptions.TabButton)
    {
    }
    
    public ItemFoldersForm() : this(ConstructorOptions.GetRandomConstructorOptions())
    {
    }
    

    使用默认构造函数生成随机选项,然后将其传递给重载构造函数,该构造函数将属性传递给基类。

    请注意,这样做的唯一方法是在构造函数的主体之前。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-10-08
      • 1970-01-01
      • 1970-01-01
      • 2016-07-19
      • 1970-01-01
      • 2021-08-29
      • 1970-01-01
      • 2018-07-21
      相关资源
      最近更新 更多