From 57e0f7880345779b53edc0f28530cd7eba467810 Mon Sep 17 00:00:00 2001 From: FiniteReality Date: Wed, 22 Feb 2017 18:44:38 +0000 Subject: [PATCH] Use type constraints which actually compile :hash:BlameFoxbot --- src/Discord.Net.Commands/CommandService.cs | 4 ++-- src/Discord.Net.Commands/IModuleBase.cs | 7 ++++++- src/Discord.Net.Commands/ModuleBase.cs | 2 +- 3 files changed, 9 insertions(+), 4 deletions(-) diff --git a/src/Discord.Net.Commands/CommandService.cs b/src/Discord.Net.Commands/CommandService.cs index 54a527c0b..3933742f3 100644 --- a/src/Discord.Net.Commands/CommandService.cs +++ b/src/Discord.Net.Commands/CommandService.cs @@ -73,7 +73,7 @@ namespace Discord.Commands _moduleLock.Release(); } } - public async Task AddModuleAsync() where T : IModuleBase + public async Task AddModuleAsync() where T : IModuleBase { await _moduleLock.WaitAsync().ConfigureAwait(false); try @@ -143,7 +143,7 @@ namespace Discord.Commands _moduleLock.Release(); } } - public async Task RemoveModuleAsync() where T : IModuleBase + public async Task RemoveModuleAsync() where T : IModuleBase { await _moduleLock.WaitAsync().ConfigureAwait(false); try diff --git a/src/Discord.Net.Commands/IModuleBase.cs b/src/Discord.Net.Commands/IModuleBase.cs index fda768b53..14caea612 100644 --- a/src/Discord.Net.Commands/IModuleBase.cs +++ b/src/Discord.Net.Commands/IModuleBase.cs @@ -1,5 +1,10 @@ -namespace Discord.Commands +namespace Discord.Commands { + public interface IModuleBase + where T : ICommandContext + { + } + internal interface IModuleBase { void SetContext(ICommandContext context); diff --git a/src/Discord.Net.Commands/ModuleBase.cs b/src/Discord.Net.Commands/ModuleBase.cs index a38ffce06..c85a4b4ba 100644 --- a/src/Discord.Net.Commands/ModuleBase.cs +++ b/src/Discord.Net.Commands/ModuleBase.cs @@ -5,7 +5,7 @@ namespace Discord.Commands { public abstract class ModuleBase : ModuleBase { } - public abstract class ModuleBase : IModuleBase + public abstract class ModuleBase : IModuleBase, IModuleBase where T : class, ICommandContext { public T Context { get; private set; }