Merge pull request #308 from Joe4evr/AutoLoadFix

Exclude abstract types from being loaded as modules.
This commit is contained in:
RogueException
2016-10-15 14:29:24 -03:00
committed by GitHub

View File

@@ -70,13 +70,16 @@ namespace Discord.Commands
await _moduleLock.WaitAsync().ConfigureAwait(false);
try
{
if (_moduleDefs.ContainsKey(typeof(T)))
throw new ArgumentException($"This module has already been added.");
var typeInfo = typeof(T).GetTypeInfo();
if (!_moduleTypeInfo.IsAssignableFrom(typeInfo))
throw new ArgumentException($"Modules must inherit ModuleBase.");
if (typeInfo.IsAbstract)
throw new InvalidOperationException("Modules must not be abstract.");
if (_moduleDefs.ContainsKey(typeof(T)))
throw new ArgumentException($"This module has already been added.");
return AddModuleInternal(typeInfo, dependencyMap);
}
finally
@@ -98,7 +101,7 @@ namespace Discord.Commands
if (_moduleTypeInfo.IsAssignableFrom(typeInfo))
{
var dontAutoLoad = typeInfo.GetCustomAttribute<DontAutoLoadAttribute>();
if (dontAutoLoad == null)
if (dontAutoLoad == null && !typeInfo.IsAbstract)
moduleDefs.Add(AddModuleInternal(typeInfo, dependencyMap));
}
}