Реализация шаблона команды с использованием делегата действия C #

Можно ли реализовать шаблон команды 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;
        }
    }
}
7
задан Dve 11 October 2010 в 10:15
поделиться