Currently we experience a circular dependency in castle windor (or probably any ioc container). We have:
public class MessageHandler : IMessageHandler
{
private readonly IService service;
public MessageHandler(IService service)
{
this.service = service;
}
private void OnIncommingMessage(string message)
{
service.DoWork(message);
}
public void SendMessage(string message)
{
//sendMessage code
}
}
public class Service : IService
{
private readonly IMessageHandler messageHandler;
public Service(IMessageHandler messageHandler)
{
this.messageHandler = messageHandler;
}
public void DoWork(string work)
{
//Do Work
}
private void SomeMethodNeedsToPushData(string message)
{
messageHandler.SendMessage(message);
}
}
public interface IService
{
void DoWork(string work);
}
public interface IMessageHandler
{
void SendMessage(string message);
}
Is there a clean way to solve above problem in Castle windsor? I dont like to go via property injection because both classes depend on the other so in my opinion this should always go via constructor injection.