Что значит «переопределить» ctor ServiceBase? - PullRequest
0 голосов
/ 26 февраля 2019

Я недавно начал работать с winservices и наткнулся на эту ссылку о winservice ctor, и она говорит о "переопределении" конструктора ServiceBase.Чувствуя себя глупо, я гуглил, что это значит, и наткнулся на это .Вопрос: Что они на самом деле имеют в виду, говоря "переопределение" в документах? Явно приковать цепочку к ctor ServiceBase?

Ответы [ 2 ]

0 голосов
/ 26 февраля 2019

Я не совсем согласен с тем, что говорит 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 голосов
/ 26 февраля 2019

MS просто заявляет, что вы должны вызывать базовый конструктор, если вы наследуете от ServiceBase (как это)

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

Это вызовет базовый конструктор в дополнение к вашему новому .ctor.Посмотрите здесь для переопределения .ctor: C # - Заставить все производные классы вызывать конструктор базового класса

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...