Рассматривали ли вы передать Func<Connection>
в конструктор? Другими словами, способ, которым вы можете получить соединение , когда вы хотите ?
(Очевидно, вам нужно передать информацию о соединении в где-то , если только вы не собираетесь получить к ней статический доступ ... дрожь.)
РЕДАКТИРОВАТЬ: Хорошо, я не знаком с RabbitMQ, но если предположить, что он имеет какой-то класс Connection
, который реализует IDisposable
, это будет выглядеть примерно так:
public class MessageHandler
{
private readonly Func<Connection> connectionProvider;
public MessageHander(Func<Connection> connectionProvider)
{
this.connectionProvider = connectionProvider;
}
public void WriteMessage(string message)
{
using (Connection connection = connectionProvider.Invoke())
{
connection.DoSomething(message);
}
}
}
Затем создайте что-то вроде:
MessageHandler handler = new MessageHandler(() => new Connection(server));
Теперь, если есть что-то более "интересное", вы можете написать отдельный класс ConnectionProvider
. Конечно, у RabbitMQ, вероятно, есть некоторый пример кода - вы должны сначала ознакомиться с ним и его документацией, так как я не совсем понимаю, о чем говорю:)