我最近开始使用winservices,我偶然发现了关于winservice ctor的this link,它谈到了“覆盖”ServiceBase构造函数。感觉很愚蠢,我用谷歌搜索了什么意思,偶然发现了this。问题:在文档中说“覆盖”它们实际上意味着什么?明确地链接到ServiceBase ctor?
我真的不同意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
。
MS只是声明如果从ServiceBase派生,你应该调用基础构造函数(像这样)
class MyService:ServiceBase
public MyService : base() {
.. custom code ..
}
除了新的.ctor之外,这将调用基础构造函数。看看这个“覆盖”.ctor:C# - Making all derived classes call the base class constructor