From 610a3a26ab54ffd177870c28fdc8e30b2cc1f526 Mon Sep 17 00:00:00 2001 From: FiniteReality Date: Sat, 20 Aug 2016 21:02:07 +0100 Subject: [PATCH] Add DI support to command Groups --- src/Discord.Net.Commands/CommandService.cs | 8 ++++---- src/Discord.Net.Commands/Module.cs | 8 ++++---- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/src/Discord.Net.Commands/CommandService.cs b/src/Discord.Net.Commands/CommandService.cs index 79b7da44f..c2d99f21a 100644 --- a/src/Discord.Net.Commands/CommandService.cs +++ b/src/Discord.Net.Commands/CommandService.cs @@ -108,19 +108,19 @@ namespace Discord.Commands if (moduleAttr == null) throw new ArgumentException($"Modules must be marked with ModuleAttribute."); - return LoadInternal(moduleInstance, moduleAttr, typeInfo); + return LoadInternal(moduleInstance, moduleAttr, typeInfo, null); } finally { _moduleLock.Release(); } } - private Module LoadInternal(object moduleInstance, ModuleAttribute moduleAttr, TypeInfo typeInfo) + private Module LoadInternal(object moduleInstance, ModuleAttribute moduleAttr, TypeInfo typeInfo, IDependencyMap dependencyMap) { if (_modules.ContainsKey(moduleInstance.GetType())) return _modules[moduleInstance.GetType()]; - var loadedModule = new Module(typeInfo, this, moduleInstance, moduleAttr); + var loadedModule = new Module(typeInfo, this, moduleInstance, moduleAttr, dependencyMap); _modules[moduleInstance.GetType()] = loadedModule; foreach (var cmd in loadedModule.Commands) @@ -141,7 +141,7 @@ namespace Discord.Commands if (moduleAttr != null && moduleAttr.AutoLoad) { var moduleInstance = ReflectionUtils.CreateObject(typeInfo, this, dependencyMap); - modules.Add(LoadInternal(moduleInstance, moduleAttr, typeInfo)); + modules.Add(LoadInternal(moduleInstance, moduleAttr, typeInfo, dependencyMap)); } } return modules.ToImmutable(); diff --git a/src/Discord.Net.Commands/Module.cs b/src/Discord.Net.Commands/Module.cs index 7f83f4388..0624e6ef3 100644 --- a/src/Discord.Net.Commands/Module.cs +++ b/src/Discord.Net.Commands/Module.cs @@ -19,7 +19,7 @@ namespace Discord.Commands public IReadOnlyList Preconditions { get; } - internal Module(TypeInfo source, CommandService service, object instance, ModuleAttribute moduleAttr) + internal Module(TypeInfo source, CommandService service, object instance, ModuleAttribute moduleAttr, IDependencyMap dependencyMap) { Source = source; Service = service; @@ -40,13 +40,13 @@ namespace Discord.Commands Description = descriptionAttr.Text; List commands = new List(); - SearchClass(source, instance, commands, Prefix); + SearchClass(source, instance, commands, Prefix, dependencyMap); Commands = commands; Preconditions = BuildPreconditions(); } - private void SearchClass(TypeInfo parentType, object instance, List commands, string groupPrefix) + private void SearchClass(TypeInfo parentType, object instance, List commands, string groupPrefix, IDependencyMap dependencyMap) { if (groupPrefix != "") groupPrefix += " "; @@ -66,7 +66,7 @@ namespace Discord.Commands nextGroupPrefix = groupPrefix + groupAttrib.Prefix ?? type.Name; else nextGroupPrefix = groupPrefix; - SearchClass(type, ReflectionUtils.CreateObject(type, Service), commands, nextGroupPrefix); + SearchClass(type, ReflectionUtils.CreateObject(type, Service, dependencyMap), commands, nextGroupPrefix, dependencyMap); } } }