public static void RegisterCommandCallback(CommandCallbackDelegate fun) { _gcHandle = GCHandle.Alloc(fun); if (IntPtr.Size == 8) RegisterCommandCallback_x64(fun); else RegisterCommandCallback_x86(fun); }
internal Command(CommandBuilder builder, Module module) { Module = module; Description = builder.Description; Remarks = builder.Remarks; Priority = builder.Priority; RunMode = builder.RunMode ?? module.RunMode; IgnoreExtraArguments = builder.IgnoreExtraArguments ?? module.IgnoreExtraArguments; Aliases = builder.Aliases.ToImmutableArray(); var fullAliases = new List <string>(); if (Module.FullAliases.Count == 0) { fullAliases.AddRange(Aliases); } else if (Aliases.Count == 0) { fullAliases.AddRange(Module.FullAliases); } else { for (var i = 0; i < Module.FullAliases.Count; i++) { for (var j = 0; j < Aliases.Count; j++) { fullAliases.Add(string.Concat(Module.FullAliases[i], Service.Separator, Aliases[j])); } } } FullAliases = fullAliases.ToImmutableArray(); Name = builder.Name ?? (FullAliases.Count > 0 ? FullAliases[0] : null); Checks = builder.Checks.ToImmutableArray(); Attributes = builder.Attributes.ToImmutableArray(); var parameters = new List <Parameter>(); for (var i = 0; i < builder.Parameters.Count; i++) { parameters.Add(builder.Parameters[i].Build(this)); } Parameters = parameters.ToImmutableArray(); Callback = builder.Callback; }
/// <summary> /// 向控制台注册一个控制台命令 /// </summary> /// <param name="commandName">控制台名称</param> /// <param name="fun">回调方法</param> public static void RegisterConsoleCommand(string commandName, CommandCallbackDelegate fun) { if (string.IsNullOrEmpty(commandName)) { throw new ArgumentNullException("commandName"); } if (fun == null) { throw new ArgumentNullException("fun"); } var name = commandName.ToLower(); if (s_cmdProcList.ContainsKey(name)) { Logs.Warn("控制台命令行已经注册过 {0} 的命令。", commandName); } s_cmdProcList[name] = fun; }
/// <summary> /// 向控制台注册一个控制台命令 /// </summary> /// <param name="commandName">控制台名称</param> /// <param name="fun">回调方法</param> public static void RegisterConsoleCommand(string commandName, CommandCallbackDelegate fun) { if (string.IsNullOrEmpty(commandName)) throw new ArgumentNullException("commandName"); if (fun == null) throw new ArgumentNullException("fun"); var name = commandName.ToLower(); if (s_cmdProcList.ContainsKey(name)) { Logs.Warn("控制台命令行已经注册过 {0} 的命令。", commandName); } s_cmdProcList[name] = fun; }