From 3a7943125c19ae49c238cf2bd16567bbc41cd6b0 Mon Sep 17 00:00:00 2001 From: Joe4evr Date: Sat, 18 Aug 2018 09:10:37 +0200 Subject: [PATCH] Throw an exception with a tailored message. --- src/Discord.Net.Commands/Builders/ParameterBuilder.cs | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) 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); }