Sto tentando di implementare un semplice esempio di applicazione CQRS.Autofac risolve la dipendenza in CQRS CommandDispatcher
Questa è una struttura della mia parte "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
}
}
Questa è l'interfaccia ICommandDipatcher
. Invia un comando al suo gestore.
public interface ICommandDispatcher
{
void Dispatch<TCommand>(TCommand command) where TCommand : ICommand;
}
Questa è un'implementazione predefinita ICommandDispatcher
e il problema principale è quello di ottenere il gestore di comando necessaria per il tipo di comando tramite 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);
}
}
Qual è il modo migliore per risolvere attuazione ICommandHanler
per tipo di comando in questo caso tramite Autofac?
Grazie!
Come posso registrare ICommandHandler di Autofac nel tuo esempio? Devo trovare il modo in cui fornire la possibilità di registrare tutti i gestori di comandi. –
@ArtyomPranovich: vedere il mio aggiornamento. – Steven
Ottimo! Funziona :) Grazie per l'esempio e la fantastica spiegazione. –