C# Windows Service - wstrzykiwanie zależności

0

Hej,
piszę sobie servis windowsowy. Jak w głównej klasie serwisu wstrzyknąć sobie mój serwis, który coś tam robi?

public partial class Service1 : ServiceBase
    {
        public Service1()
        {
            InitializeComponent();
        }

        protected override void OnStart(string[] args)
        {            
        }

        protected override void OnStop()
        {
        }
    }

powiedzmy testowo aby sprawdzić czy wszystko chodzi taki serwis

    public class MessageService : IMessageService
    {
        public string _path = @"D:\log_service.txt";
        public IEnumerable<Message> _messages;

        private readonly IMessageRepository _messageRepository;

        public MessageService(IMessageRepository messageRepository)
        {
            _messageRepository = messageRepository;
        }

        public void SendSmsMessage(IEnumerable<Message> messages)
        {
            _messages = _messageRepository.GetMessages();
            
            foreach (Message mess in messages)
            {
                File.AppendAllText(_path, Environment.NewLine + " " + DateTime.UtcNow + " ::: " + mess.Document);
            }
        }
    }
1

Tutaj jest dobra odpowiedz: https://stackoverflow.com/questions/25135937/unity-di-on-a-windows-service-is-possible Przykład przy użyciu kontenera Unity ale to nie powinno mieć znaczenia.

0
Szalony Mleczarztak napisał(a):

Hej,
piszę sobie servis windowsowy. Jak w głównej klasie serwisu wstrzyknąć sobie mój serwis, który coś tam robi?

public partial class Service1 : ServiceBase
    {
        public Service1()
        {
            InitializeComponent();
        }

        protected override void OnStart(string[] args)
        {            
        }

        protected override void OnStop()
        {
        }
    }

powiedzmy testowo aby sprawdzić czy wszystko chodzi taki serwis

    public class MessageService : IMessageService
    {
        public string _path = @"D:\log_service.txt";
        public IEnumerable<Message> _messages;

        private readonly IMessageRepository _messageRepository;

        public MessageService(IMessageRepository messageRepository)
        {
            _messageRepository = messageRepository;
        }

        public void SendSmsMessage(IEnumerable<Message> messages)
        {
            _messages = _messageRepository.GetMessages();
            
            foreach (Message mess in messages)
            {
                File.AppendAllText(_path, Environment.NewLine + " " + DateTime.UtcNow + " ::: " + mess.Document);
            }
        }
    }

Witam,

Może zobacz na co pozwala projekt Topshelf

Pozdrawiam,

mr-owl

1 użytkowników online, w tym zalogowanych: 0, gości: 1