Я пытаюсь реализовать простой пример CQRS-приложения.
Это структура моей части "Command":
public interface ICommand
{
}
//base interface for command handlers
interface ICommandHandler<in TCommand> where TCommand: ICommand
{
void Execute(TCommand command);
}
// example of the command
public class SimpleCommand: ICommand
{
//some properties
}
// example of the SimpleCommand command handler
public class SimpleCommandHandler: ICommandHandler<SimpleCommand>
{
public void Execute(SimpleCommand command)
{
//some logic
}
}
Это интерфейс ICommandDipatcher
. Он отправляет команду своему обработчику.
public interface ICommandDispatcher
{
void Dispatch<TCommand>(TCommand command) where TCommand : ICommand;
}
Это стандартная реализация ICommandDispatcher
, и основной проблемой является получение необходимого обработчика команд по типу команды через Autofac
.
public class DefaultCommandDispatcher : ICommandDispatcher
{
public void Dispatch<TCommand>(TCommand command) where TCommand : ICommand
{
//How to resolve/get object of the neseccary command handler
//by the type of command (TCommand)
handler.Execute(command);
}
}
Каков наилучший способ разрешить реализацию ICommandHanler
по типу команды в этом случае с помощью Autofac?
Спасибо!