Example #1
0
        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);
        }
Example #2
0
        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);
        }