концепция довольно популярна, но я еще не нашел ответ.Как я могу сделать это лучше, используя Ninject IOC
У меня есть следующий класс структуры
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 и dooing мои привязок как
Bind<IMessageHandler<MessageA>>.To<MessageAHandler>();
Bind<IMessageHandler<MessageB>>.To<MessageBHandler>();
Я хочу сделать все привязки магии каким-то образом в связывающем модуле за выбор обработчик. Класс MessageProcessor должен быть просто передан что-то, которое он вызывает для обработки сообщения.
Что это такое что-то есть и как это можно сделать в модуле привязки - это то, что я не могу понять. Может кто-то, пожалуйста, помогите!
Благодаря
Как вы вводите типы в класс 'MessageProcessor'? –
инъекция конструктора с использованием ninject. код был опущен из-за ограничений NDA – user205892