@@ -134,29 +134,29 @@ namespace Discord.Commands
return null;
}
public async Task<Module> Load(object module)
public async Task<Module> Load(object moduleInstance )
{
await _moduleLock.WaitAsync().ConfigureAwait(false);
try
{
if (_modules.ContainsKey(module))
if (_modules.ContainsKey(moduleInstance ))
throw new ArgumentException($"This module has already been loaded.");
var typeInfo = module.GetType().GetTypeInfo();
var typeInfo = moduleInstance .GetType().GetTypeInfo();
if (typeInfo.GetCustomAttribute<ModuleAttribute>() == null)
throw new ArgumentException($"Modules must be marked with ModuleAttribute.");
return LoadInternal(module, typeInfo);
return LoadInternal(moduleInstance , typeInfo);
}
finally
{
_moduleLock.Release();
}
}
private Module LoadInternal(object module, TypeInfo typeInfo)
private Module LoadInternal(object moduleInstance , TypeInfo typeInfo)
{
var loadedModule = new Module(this, module, typeInfo);
_modules[module] = loadedModule;
var loadedModule = new Module(this, moduleInstance , typeInfo);
_modules[moduleInstance ] = loadedModule;
foreach (var cmd in loadedModule.Commands)
{
@@ -169,7 +169,7 @@ namespace Discord.Commands
}
public async Task<IEnumerable<Module>> LoadAssembly(Assembly assembly)
{
List<Module> modules = new List <Module>();
var modules = ImmutableArray.CreateBuilder <Module>();
await _moduleLock.WaitAsync().ConfigureAwait(false);
try
{
@@ -178,11 +178,11 @@ namespace Discord.Commands
var typeInfo = type.GetTypeInfo();
if (typeInfo.GetCustomAttribute<ModuleAttribute>() != null)
{
var module = ReflectionUtils.CreateObject(typeInfo);
modules.Add(LoadInternal(module, typeInfo));
var moduleInstance = ReflectionUtils.CreateObject(typeInfo);
modules.Add(LoadInternal(moduleInstance , typeInfo));
}
}
return modules;
return modules.ToImmutable() ;
}
finally
{
@@ -202,12 +202,12 @@ namespace Discord.Commands
_moduleLock.Release();
}
}
public async Task<bool> Unload(object module)
public async Task<bool> Unload(object moduleInstance )
{
await _moduleLock.WaitAsync().ConfigureAwait(false);
try
{
return UnloadInternal(module);
return UnloadInternal(moduleInstance );
}
finally
{
@@ -233,8 +233,7 @@ namespace Discord.Commands
else
return false;
}
//TODO: C#7 Candidate for tuple
public SearchResult Search(string input)
{
string lowerInput = input.ToLowerInvariant();