diff --git a/src/Discord.Net.Commands/Builders/ParameterBuilder.cs b/src/Discord.Net.Commands/Builders/ParameterBuilder.cs index 93d2b181c..4ad5bfac0 100644 --- a/src/Discord.Net.Commands/Builders/ParameterBuilder.cs +++ b/src/Discord.Net.Commands/Builders/ParameterBuilder.cs @@ -63,7 +63,16 @@ namespace Discord.Commands.Builders var reader = commands.GetTypeReaders(type)?.FirstOrDefault().Value; if (reader == null) { - var readerType = typeof(NamedArgumentTypeReader<>).MakeGenericType(new[] { type }); + Type readerType; + try + { + readerType = typeof(NamedArgumentTypeReader<>).MakeGenericType(new[] { type }); + } + catch (ArgumentException ex) + { + throw new InvalidOperationException($"Parameter type '{type.Name}' for command '{Command.Name}' must be a class with a public parameterless constructor to use as a NamedArgumentType.", ex); + } + reader = (TypeReader)Activator.CreateInstance(readerType, new[] { commands }); commands.AddTypeReader(type, reader); }