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