c# Ninject -绑定工厂方法和泛型

本文关键字:方法 泛型 工厂 绑定 Ninject | 更新日期: 2023-09-27 18:01:45

我有一个名为MessageHandlerFactory的工厂方法

public class MessageHandlerFactory : IMessageHandlerFactory<IMessage>
{
    public IMessageHandler<IMessage> GetMessageHandler()
    {
        return new MessageHandler_1();
    }
}    

…和下面的消息Handler

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}没有匹配的绑定字体不能自装订。激活路径:1)请求IMessageHandler {IMessage}

想知道我该如何修复它吗?我已经玩了很长一段时间没有任何成功。任何帮助都将非常感激!!

c# Ninject -绑定工厂方法和泛型

您的异常消息暗示您正在尝试解决"IMessageHandler",没有匹配的绑定。最接近的是IMessageHandler<(注意缺少"I")。我猜这就是你遇到问题的地方。