public override CommandOverload[] GetOverloads() { CommandOverload[] overloads = new CommandOverload[_sources.Length]; for (int i = 0; i < overloads.Length; i++) { ConfigFunctionInfo source = _sources[i]; overloads[i] = new CommandOverload( typeof(void), source.GetParameters().Select(x => new CommandOverload.Parameter(x.Name, x.Type, Array.Empty <Attribute>())).ToArray(), source.Desc, new CommandOverload.ExampleInfo(null, null, null), x => { var args = new List <object>(x); args.RemoveAt(0); // Remove command metadata. object result = source.Action.DynamicInvoke(args.ToArray()); bool success = result is bool?(bool)result: true; if (result != null) { args.Insert(0, success); // Effectively replace metadata with a success if a success boolean was returned. } return(TaskResult(null, source.Message.DynamicInvoke(args.ToArray()) as string)); }); } return(overloads); }
public override CommandOverload[] GetOverloads() { CommandOverload[] overloads = new CommandOverload[_sources.Length]; for (int i = 0; i < overloads.Length; i++) { ConfigFunctionInfo source = _sources[i]; overloads[i] = new CommandOverload( typeof(void), source.GetParameters().Select(x => new CommandOverload.Parameter(x.Name, x.Type, Array.Empty <Attribute>())).ToArray(), source.Desc, new CommandOverload.ExampleInfo(null, null, null), x => { var args = new List <object>(x); args.RemoveAt(0); // Remove command metadata. source.Action.DynamicInvoke(args.ToArray()); return(TaskResult(null, source.Message.DynamicInvoke(args.ToArray()) as string)); }); } return(overloads); }