簡體   English   中英

C#Ninject-綁定工廠方法和泛型

[英]C# Ninject - Binding Factory Method and Generic

我有一個名為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}時出錯,沒有匹配的綁定可用,並且該類型不可自綁定。 激活路徑:1)請求IMessageHandler {IMessage}

想知道我該如何解決? 我玩這個游戲已經有一段時間了,沒有任何成功。 任何幫助將不勝感激!!

您的異常消息表示您正在嘗試解析“ IMessageHandler <IMessage>”,並且沒有匹配的綁定。 最接近的是“ IMessageHandler <Message>”的綁定(請注意缺少的“ I”)。 我猜這就是您遇到問題的地方。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM