【发布时间】:2014-02-14 12:49:19
【问题描述】:
这个概念很流行,但我还没有找到答案。
我有以下类结构
public interface IMessage
{
}
public class MessageA : IMessage
{
}
public class MessageB : IMessage
{
}
public interface IMessageHandler<T> where T : IMessage
{
void Handle(TMessage message);
}
public interface MessageAHandler : IMessageHandler<MessageA>
{
}
public interface MessageBHandler : IMessageHandler<MessageB>
{
}
public class MessageProcessor
{
public void Process(IMessage)
{
if (IMessage is MessageA)
{
// handler for messageA has to be invoked
}
else if (IMessage is MessageB)
{
// handler for messageB has to be invoked
}
}
}
现在我正在使用 Ninject 并执行我的绑定,例如
Bind<IMessageHandler<MessageA>>.To<MessageAHandler>();
Bind<IMessageHandler<MessageB>>.To<MessageBHandler>();
我想在绑定模块中以某种方式执行所有绑定魔术以选择处理程序。 MessageProcessor 类应该只传递 something 它调用来处理消息。
这个 something 是什么以及如何在绑定模块中完成是我无法弄清楚的。有人可以帮忙吗!
谢谢
【问题讨论】:
-
你是如何在
MessageProcessor类上注入类型的? -
使用ninject进行构造函数注入。由于 NDA 限制,代码已被省略
标签: c# dependency-injection ninject