我有一个名为 MessageHandlerFactory
的工厂方法public class MessageHandlerFactory : IMessageHandlerFactory<IMessage>
{
public IMessageHandler<IMessage> GetMessageHandler()
{
return new MessageHandler_1();
}
}
...以及以下消息处理程序
public class MessageHandler_1 : IMessageHandler<Message>
{
//Do Something…
}
public class Message : IMessage
{
public String Name {get; set;}
}
需要将MessageHandlerFactory 分配给项目中出现的所有 IMessageHandlerFactory ,以便对 IMessageHandlerFactory.GetMessageHandler()的调用将返回实例 MessageHandler_1 。 (在我的实际代码中,我有多个IMessageHandler和IMessageHandlerFactory.GetMessageHandler的实现将基于某些条件返回适当的实现...)。这是我如何进行Ninject绑定
Bind<IMessageHandlerFactory<IMessage>>().To<MessageHandlerFactory>();
Bind<IMessageHandler<Message>>().To<MessageHandler_1>();
但是当我尝试访问MessageHandlerFactory.GetMessageHandler时,我得到以下异常
Ninject.ActivationException:激活错误 IMessageHandler {IMessage}没有匹配的绑定可用,而且 type不可自绑定。激活路径:1)请求 IMessageHandler {即时聊天}
想知道我该如何解决它?我一直在玩这个很长一段时间没有任何成功。任何帮助将不胜感激!!
答案 0 :(得分:0)
您的异常消息意味着您正在尝试解析&#34; IMessageHandler&lt; IMessage&gt;&#34;,并且没有匹配的绑定。你最接近的是&#34; IMessageHandler&lt;消息&gt;&#34; (注意缺少&#34;我&#34;)。我猜你在哪里遇到了问题。