Browse Source

Cleaned up bugs in DependencyMap and ReflectionUtils

pull/138/head
Christopher F 9 years ago
parent
commit
e266fa8b32
2 changed files with 12 additions and 7 deletions
  1. +5
    -0
      src/Discord.Net.Commands/Dependencies/DependencyMap.cs
  2. +7
    -7
      src/Discord.Net.Commands/ReflectionUtils.cs

+ 5
- 0
src/Discord.Net.Commands/Dependencies/DependencyMap.cs View File

@@ -8,6 +8,11 @@ namespace Discord.Commands
{
private Dictionary<Type, object> map;

public DependencyMap()
{
map = new Dictionary<Type, object>();
}

public T Get<T>() where T : class
{
var t = typeof(T);


+ 7
- 7
src/Discord.Net.Commands/ReflectionUtils.cs View File

@@ -16,23 +16,23 @@ namespace Discord.Commands
if (constructor.GetParameters().Length == 0)
return constructor.Invoke(null);
else if (constructor.GetParameters().Length > 1)
throw new InvalidOperationException($"Could not find a valid constructor for \"{typeInfo.FullName}\"");
throw new InvalidOperationException($"Could not find a valid constructor for \"{typeInfo.FullName}\" (Found too many parameters)");
var parameter = constructor.GetParameters().FirstOrDefault();
if (parameter == null)
throw new InvalidOperationException($"Could not find a valid constructor for \"{typeInfo.FullName}\"");
if (parameter.GetType() == typeof(CommandService))
throw new InvalidOperationException($"Could not find a valid constructor for \"{typeInfo.FullName}\" (No valid parameters)");
if (parameter.ParameterType == typeof(CommandService))
return constructor.Invoke(new object[1] { commands });
else if (parameter is IDependencyMap)
else if (parameter.ParameterType == typeof(IDependencyMap))
{
if (map == null) throw new InvalidOperationException($"The constructor for \"{typeInfo.FullName}\" requires a Dependency Map.");
return constructor.Invoke(new object[1] { map });
}
else
throw new InvalidOperationException($"Could not find a valid constructor for \"{typeInfo.FullName}\"");
throw new InvalidOperationException($"Could not find a valid constructor for \"{typeInfo.FullName}\" (Invalid Parameter Type: \"{parameter.ParameterType.FullName}\")");
}
catch
catch (Exception e)
{
throw new InvalidOperationException($"Could not find a valid constructor for \"{typeInfo.FullName}\"");
throw new InvalidOperationException($"Could not find a valid constructor for \"{typeInfo.FullName}\" (Error invoking constructor)");
}
}
}


Loading…
Cancel
Save