From 4274900d431e1316738a9e34bac76f667a8a123a Mon Sep 17 00:00:00 2001 From: Khionu Sybiern Date: Wed, 1 Mar 2017 14:19:28 -0500 Subject: [PATCH] Implimented discussed changes --- src/Discord.Net.Commands/Dependencies/DependencyMap.cs | 4 ++++ src/Discord.Net.Commands/Utilities/ReflectionUtils.cs | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/src/Discord.Net.Commands/Dependencies/DependencyMap.cs b/src/Discord.Net.Commands/Dependencies/DependencyMap.cs index f5adf1a8c..b89ab4370 100644 --- a/src/Discord.Net.Commands/Dependencies/DependencyMap.cs +++ b/src/Discord.Net.Commands/Dependencies/DependencyMap.cs @@ -38,6 +38,8 @@ namespace Discord.Commands public void AddFactory(Func factory) where T : class { var t = typeof(T); + if (typeof(T) == typeof(IDependencyMap) || typeof(T) == typeof(CommandService)) + throw new InvalidOperationException("The dependency map cannot contain services directly added as IDependencyMap or CommandService. Only Implimentations and Derivatives are permitted"); if (map.ContainsKey(t)) throw new InvalidOperationException($"The dependency map already contains \"{t.FullName}\""); map.Add(t, factory); @@ -48,6 +50,8 @@ namespace Discord.Commands var t = typeof(T); if (map.ContainsKey(t)) return false; + if (typeof(T) == typeof(IDependencyMap) || typeof(T) == typeof(CommandService)) + throw new InvalidOperationException("The dependency map cannot contain services directly added as IDependencyMap or CommandService. Only Implimentations and Derivatives are permitted"); map.Add(t, factory); return true; } diff --git a/src/Discord.Net.Commands/Utilities/ReflectionUtils.cs b/src/Discord.Net.Commands/Utilities/ReflectionUtils.cs index fdbc8d015..2eaa6a882 100644 --- a/src/Discord.Net.Commands/Utilities/ReflectionUtils.cs +++ b/src/Discord.Net.Commands/Utilities/ReflectionUtils.cs @@ -60,7 +60,7 @@ namespace Discord.Commands { if (targetType == typeof(CommandService)) arg = service; - else if (_dependencyTypeInfo.IsAssignableFrom(targetType.GetTypeInfo())) + else if (targetType == typeof(IDependencyMap) || targetType == map.GetType()) arg = map; else throw new InvalidOperationException($"Failed to create \"{baseType.FullName}\", dependency \"{targetType.Name}\" was not found.");