Самый простой и, на мой взгляд, самый простой способ - использовать открытое статическое свойство класса обслуживания. Единственный раз, когда это не сработает, это если вы используете один и тот же класс обслуживания для запуска нескольких служб в одном и том же процессе, что очень редко.
private static MyService m_ServiceInstance;
public static MyService ServiceInstance
{
get { return m_ServiceInstance; }
}
public MyService()
{
InitializeComponents();
//Other initialization
m_ServiceInstance = this;
}
Внедрение экземпляра службы в каждый метод, который может понадобиться, является альтернативой, но он может быстро запутаться и не имеет реальных преимуществ по сравнению с использованием только статического свойства.