Код: Выделить всё
public interface ICommand { }
public class AddUser : ICommand
{
public string Name { get; set; }
public string Password { get; set; }
}
public interface ICommandHandler : IHandler where T : ICommand
{
void Execute(T command);
}
public class AddUserHandler : ICommandHandler
{
public void Execute(AddUser command)
{
Console.WriteLine("{0}: User added: {1}", GetType().Name, command.Name);
}
}
public class AuditTrailHandler : ICommandHandler
{
public void Execute(ICommand command)
{
Console.WriteLine("{0}: Have seen a command of type {1}", GetType().Name, command.GetType().Name);
}
}
< /code>
Я хотел бы использовать сканирование для регистрации icommandhandler , чтобы я получил следующие типы в контейнере: < /p>
[list]
[*]ICommandHandler
[*]
Код: Выделить всё
ICommandHandler
[/list]
Я попробовал это с помощью реализации IregistrationConvention, и в один момент я работал, но я просто не могу понять, как я это сделал.
Код: Выделить всё
// A method in CommandDispatcher
public void SendCommand(T command) where T : ICommand {
var commandHandlers = container.GetAllInstances();
foreach (var commandHandler in commandHandlers) {
commandHandler.Execute(command);
}
}
Подробнее здесь: https://stackoverflow.com/questions/473 ... ementation