Browse Source

Added AddParameter<T>. Fixed AddParameter ignoring default typereaders.

tags/1.0-rc
RogueException 8 years ago
parent
commit
d623b18dff
2 changed files with 14 additions and 4 deletions
  1. +7
    -0
      src/Discord.Net.Commands/Builders/CommandBuilder.cs
  2. +7
    -4
      src/Discord.Net.Commands/Builders/ParameterBuilder.cs

+ 7
- 0
src/Discord.Net.Commands/Builders/CommandBuilder.cs View File

@@ -80,6 +80,13 @@ namespace Discord.Commands.Builders
_preconditions.Add(precondition);
return this;
}
public CommandBuilder AddParameter<T>(string name, Action<ParameterBuilder> createFunc)
{
var param = new ParameterBuilder(this, name, typeof(T));
createFunc(param);
_parameters.Add(param);
return this;
}
public CommandBuilder AddParameter(string name, Type type, Action<ParameterBuilder> createFunc)
{
var param = new ParameterBuilder(this, name, type);


+ 7
- 4
src/Discord.Net.Commands/Builders/ParameterBuilder.cs View File

@@ -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);


Loading…
Cancel
Save