Можно ли реализовать шаблон команды GOF с использованием делегатов Queue of Action?
Я пытался осмыслить это в течение некоторого времени, и я в тупике, потому что каждое из возможных действий я хочу добавить к очередь может иметь различное количество параметров.
Есть предложения? Я лаяю не на то дерево, сосредотачиваясь на шаблоне команды?
ОБНОВЛЕНИЕ:
Большое спасибо, jgauffin, это работает ... моя реализация теперь выглядит как
public class CommandDispatcher
{
private readonly Dictionary<Type, List<Action<ICommand>>> _registeredCommands =
new Dictionary<Type, List<Action<ICommand>>>();
public void RegisterCommand<T>(Action<ICommand> action) where T : ICommand
{
if (_registeredCommands.ContainsKey(typeof (T)))
_registeredCommands[typeof (T)].Add(action);
else
_registeredCommands.Add(typeof (T), new List<Action<ICommand>> {action});
}
public void Trigger<T>(T command) where T : ICommand
{
if (!_registeredCommands.ContainsKey(typeof(T)))
throw new InvalidOperationException("There are no subscribers for that command");
foreach (var registeredCommand in _registeredCommands[typeof(T)])
{
registeredCommand(command);
if (command.Cancel) break;
}
}
}