From d623b18dff389250a9981bc378a5647319d00288 Mon Sep 17 00:00:00 2001 From: RogueException Date: Fri, 16 Dec 2016 10:00:39 -0400 Subject: [PATCH] Added AddParameter. Fixed AddParameter ignoring default typereaders. --- src/Discord.Net.Commands/Builders/CommandBuilder.cs | 7 +++++++ src/Discord.Net.Commands/Builders/ParameterBuilder.cs | 11 +++++++---- 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/src/Discord.Net.Commands/Builders/CommandBuilder.cs b/src/Discord.Net.Commands/Builders/CommandBuilder.cs index 9b983fd1f..a3f2fee78 100644 --- a/src/Discord.Net.Commands/Builders/CommandBuilder.cs +++ b/src/Discord.Net.Commands/Builders/CommandBuilder.cs @@ -80,6 +80,13 @@ namespace Discord.Commands.Builders _preconditions.Add(precondition); return this; } + public CommandBuilder AddParameter(string name, Action createFunc) + { + var param = new ParameterBuilder(this, name, typeof(T)); + createFunc(param); + _parameters.Add(param); + return this; + } public CommandBuilder AddParameter(string name, Type type, Action createFunc) { var param = new ParameterBuilder(this, name, type); diff --git a/src/Discord.Net.Commands/Builders/ParameterBuilder.cs b/src/Discord.Net.Commands/Builders/ParameterBuilder.cs index d4cf598ec..c9801f458 100644 --- a/src/Discord.Net.Commands/Builders/ParameterBuilder.cs +++ b/src/Discord.Net.Commands/Builders/ParameterBuilder.cs @@ -43,10 +43,13 @@ namespace Discord.Commands.Builders internal void SetType(Type type) { var readers = Command.Module.Service.GetTypeReaders(type); - if (readers == null) - throw new InvalidOperationException($"{type} does not have a TypeReader registered for it"); - - TypeReader = readers.FirstOrDefault().Value; + if (readers != null) + TypeReader = readers.FirstOrDefault().Value; + else + TypeReader = Command.Module.Service.GetDefaultTypeReader(type); + + if (TypeReader == null) + throw new InvalidOperationException($"{type} does not have a TypeReader registered for it"); if (type.GetTypeInfo().IsValueType) DefaultValue = Activator.CreateInstance(type);