From cb4f6e37f63c4383ae54f6674ec09bee854879ac Mon Sep 17 00:00:00 2001 From: Bond-009 Date: Sat, 29 Apr 2017 09:42:47 +0200 Subject: [PATCH] Overloaded AddModuleAsync with Type (#581) * Overloaded AddModuleAsync with Type * Overloaded RemoveModuleAsync with Type * Use expression-bodied method for consistency --- src/Discord.Net.Commands/CommandService.cs | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/src/Discord.Net.Commands/CommandService.cs b/src/Discord.Net.Commands/CommandService.cs index c0c20f80f..945db33a8 100644 --- a/src/Discord.Net.Commands/CommandService.cs +++ b/src/Discord.Net.Commands/CommandService.cs @@ -83,20 +83,21 @@ namespace Discord.Commands _moduleLock.Release(); } } - public async Task AddModuleAsync() + public Task AddModuleAsync() => AddModuleAsync(typeof(T)); + public async Task AddModuleAsync(Type type) { await _moduleLock.WaitAsync().ConfigureAwait(false); try { - var typeInfo = typeof(T).GetTypeInfo(); + var typeInfo = type.GetTypeInfo(); - if (_typedModuleDefs.ContainsKey(typeof(T))) + if (_typedModuleDefs.ContainsKey(type)) throw new ArgumentException($"This module has already been added."); var module = ModuleClassBuilder.Build(this, typeInfo).FirstOrDefault(); if (module.Value == default(ModuleInfo)) - throw new InvalidOperationException($"Could not build the module {typeof(T).FullName}, did you pass an invalid type?"); + throw new InvalidOperationException($"Could not build the module {type.FullName}, did you pass an invalid type?"); _typedModuleDefs[module.Key] = module.Value; @@ -153,13 +154,14 @@ namespace Discord.Commands _moduleLock.Release(); } } - public async Task RemoveModuleAsync() + public Task RemoveModuleAsync() => RemoveModuleAsync(typeof(T)); + public async Task RemoveModuleAsync(Type type) { await _moduleLock.WaitAsync().ConfigureAwait(false); try { ModuleInfo module; - if (!_typedModuleDefs.TryRemove(typeof(T), out module)) + if (!_typedModuleDefs.TryRemove(type, out module)) return false; return RemoveModuleInternal(module);