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