“覆盖”ServiceBase的ctor是什么意思?

问题描述 投票:1回答:2

我最近开始使用winservices,我偶然发现了关于winservice ctor的this link,它谈到了“覆盖”ServiceBase构造函数。感觉很愚蠢,我用谷歌搜索了什么意思,偶然发现了this。问题:在文档中说“覆盖”它们实际上意味着什么?明确地链接到ServiceBase ctor?

c# constructor windows-services
2个回答
0
投票

我真的不同意MS的说法。 ServiceBase有一个空的默认构造函数,它会被自动调用,所以你必须覆盖它的语句(这也不是真的,我会超载而不是覆盖)并不是真的。但是,我猜他们的意思是像这样调用基础构造函数

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


0
投票

MS只是声明如果从ServiceBase派生,你应该调用基础构造函数(像这样)

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

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

© www.soinside.com 2019 - 2024. All rights reserved.