我有一個工廠方法稱爲MessageHandlerFactoryC#Ninject - 裝訂工廠方法和通用
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,以便調用IMessageHandlerFact ory.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 {即時消息}
想知道我該如何修復它?我一直在玩這個遊戲很久沒有取得任何成功。任何幫助將不勝感激!!
您的實際執行情況必須與您在此處提供的不同,因爲您在此處提供的代碼不會*,永遠*,解決'IMessageHandler'。沒有'IResolutionRoot.Get <..>'。所以請提供您的*實際*代碼,以便我們可以提供幫助。你可能也想看看ninject.extensions.factory - 它消除了實現工廠只需要返回IResolutionRoot.Get <...>()' –
BatteryBackupUnit