Topshelf.Windsor provides extensions to construct your service class from your Castle Windsor IoC container.
It's available via nuget package
PM> Install-Package Topshelf.Windsor
static void Main(string[] args)
{
// Create your container
var container = new WindsorContainer();
container.Register(
Component.For<ISampleDependency>().ImplementedBy<SampleDependency>(),
Component.For<SampleService>()
);
HostFactory.Run(c =>
{
// Pass it to Topshelf
c.UseWindsorContainer(container);
c.Service<SampleService>(s =>
{
// Let Topshelf use it
s.ConstructUsingWindsorContainer();
s.WhenStarted((service, control) => service.Start());
s.WhenStopped((service, control) => service.Stop());
});
});
}