“替代” ServiceBase的核心是什么意思?

时间:2019-02-26 09:53:00

标签: c# constructor windows-services

我最近开始使用winservices,我偶然发现this link关于winservice ctor的内容,它谈到了“覆盖” ServiceBase构造函数。 觉得很愚蠢,我在Google上搜索了一下,然后偶然发现了this。 问题:通过在文档中说“覆盖”,它们实际上是什么意思?要明确地链接回ServiceBase ctor?

2 个答案:

答案 0 :(得分:0)

MS仅声明如果您是从ServiceBase派生的,则应该调用基本构造函数(像这样)

class MyService:ServiceBase
public MyService : base() {
.. custom code ..
}

除了新的.ctor外,这还将调用基本构造函数。 在这里查看“覆盖” .ctor: C# - Making all derived classes call the base class constructor

答案 1 :(得分:0)

我真的不同意MS所说的话。 ServiceBase有一个空的默认构造函数,该构造函数将被自动调用,因此您必须覆盖它的语句(这也是不正确的,我会 overloading 而不是 overriding )不是真的。 但是,我猜测的意思是像这样

public class MyService : ServiceBase {
    public MyService(var something) : base(){

    }
}

相同
public class MyService : ServiceBase {
    public MyService(var something){

    }
}

/ edit:理论上,如果要重载(而不是覆盖)基本构造函数,则必须显式调用它。

public class ServiceBase{
    public ServiceBase(){

    }

    public ServiceBase(var something) {

    }
}
public class MyService : ServiceBase {
    public MyService(var something)
        : base(something) 
    {

    }
}

但是,无法重载ServiceBase构造函数,因为该类未标记为partial