C#Ninject - 绑定工厂方法和通用

时间:2014-05-04 00:49:35

标签: c# binding ninject ninject-extensions

我有一个名为 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 {即时聊天}

想知道我该如何解决它?我一直在玩这个很长一段时间没有任何成功。任何帮助将不胜感激!!

1 个答案:

答案 0 :(得分:0)

您的异常消息意味着您正在尝试解析&#34; IMessageHandler&lt; IMessage&gt;&#34;,并且没有匹配的绑定。你最接近的是&#34; IMessageHandler&lt;消息&gt;&#34; (注意缺少&#34;我&#34;)。我猜你在哪里遇到了问题。