如何避免调用基类构造函数

Dan*_*all 4 c# inheritance

我只是在谈论如何最好地组织这里的继承.我有一个类(下面)需要使用基本的ExportData类中的大多数类,并覆盖其中的一些类:

public class ExtendedExportData : ExportData
{

    private tData _Data;
    private ResStrings _diaStrings;

    public ExtendedExportData(tData Data, ResStrings diaStrings)
        : base(tData, diaStrings)
    {
        _tData = Data;
        _diaStrings = diaStrings;

    }
}
Run Code Online (Sandbox Code Playgroud)

在这种情况下不需要的是必须调用基础构造函数,因为上面类中使用的基类方法都不需要初始化,构造函数只是在为其他(冗长)创建基类实例时才需要的.目的.

如果我删除基本构造函数我在子类构造函数上得到一个错误,说基本构造函数不接受0参数.我怎么能避免这个?

这是基类:

public class ExportData
{
    private tData _Data;
    private ResStrings _diaStrings;

    public ExportLines(tData Data, ResStrings diaStrings)
    {
        _Data = Data;
        _diaStrings = diaStrings;
    }
}
Run Code Online (Sandbox Code Playgroud)

提前致谢.

C.E*_*uis 6

始终使用基类的构造函数 - 但是当基类没有显式定义的构造函数时,C#将自动生成一个公共无参数构造函数.

类似地,如果: base(...)在派生类中没有明确提及,C#假定您要使用基类的无参数构造函数.

一旦定义了构造函数,就不再自动生成无参数构造函数,因此您必须调用: base(...).

您可以通过向基类添加这样的构造函数来轻松地更改它:

public class ExportData
{
    protected ExportData()
    {
    }
}
Run Code Online (Sandbox Code Playgroud)

通过使此构造函数受到保护,只有继承的类ExportData才能使用此构造函数,并且它们不再需要包含: base(...).