using System; using System.Collections.Generic; using System.Text; namespace PDFPatcher.Common { /// /// 表示在指定上下文下执行的处理命令。 /// /// 处理命令时的上下文类型。 interface ICommand

{ void Process(P context, params string[] parameters); } ///

/// 不区分字符串大小写匹配的容器集合。用于编辑器命令模式。 /// /// 命令模式的处理参数类型。 sealed class CommandRegistry

{ readonly Dictionary> _container = new Dictionary>(StringComparer.OrdinalIgnoreCase); ///

/// 注册执行处理的命令处理器。 /// /// 执行命令的处理器。 /// 触发该命令的命令标识符。 public void Register(ICommand

command, params string[] commandIDs) { foreach (var cmd in commandIDs) { _container.Add(cmd, command); } } ///

/// 执行指定的命令。 /// /// 命令标识符。 /// 处理命令时的上下文变量。 /// 参数。 /// 如找到对应的命令处理,则返回 true,否则返回 false。 public bool Process(string commandID, P context, params string[] parameters) { if (_container.TryGetValue(commandID, out ICommand

cmd)) { cmd.Process(context, parameters); return true; } return false; } } }