首页 > 解决方案 > “覆盖” ServiceBase 的 ctor 是什么意思?

问题描述

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

标签: c#constructorwindows-services

解决方案


我真的不同意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.


推荐阅读