我有一个使用MVC Web API开发的azure应用程序,它使用Ninject作为依赖注入框架,这里有许多队列用于与负责后台处理的其他工作者角色进行通信。
为了能够进行单元测试我决定使用名为QueueClientWrapper的类包装QueueClient并使用名为IQueueClientWrapper的接口
类和接口如下所示,
public interface IQueueClientWrapper
{
void Send<T>(T message);
}
public class QueueClientWrapper : IQueueClientWrapper
{
private QueueClient _queueClient;
public QueueClientWrapper(QueueClient queueClient)
{
_queueClient = queueClient;
}
public void Send<T>(T message)
{
_queueClient.Send(new BrokeredMessage(message));
}
}
然而,这种方法的局限性是我需要将QueueClient传递给构造函数,这对于Ninject是不可能的。
所以我在想改变界面,
public interface IQueueClientWrapper
{
void Send<T>(string connectionString,string queueName,T message);
}
这样我就可以使用Ninject注入QueueClientWrapper而无需传递构造函数参数,
我现在遇到的问题是,通常不建议创建多个队列客户端对象,我们必须重新使用相同的实例。那么解决这个问题的最佳方法是什么(我想过使用静态Hashtable并用于存储队列名称,队列客户端对,但我对这种方法也不是很满意)?