Skip to content
This repository was archived by the owner on Jan 16, 2020. It is now read-only.

Commit 26631c6

Browse files
committed
DI + Logging Refactorings
1 parent 99735bb commit 26631c6

21 files changed

Lines changed: 146 additions & 151 deletions

Rocket.API/DependencyInjection/IDependencyContainer.cs

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -26,44 +26,44 @@ public interface IDependencyContainer : IDependencyResolver, IDisposable
2626
/// <typeparam name="TInterface">The service interface.</typeparam>
2727
/// <typeparam name="TClass">The service implementation.</typeparam>
2828
/// <param name="mappingNames">The mapping names. Include <b>null</b> in mapping names to override default provider.</param>
29-
void RegisterType<TInterface, TClass>(params string[] mappingNames) where TClass : TInterface;
29+
void AddTransient<TInterface, TClass>(params string[] mappingNames) where TClass : TInterface;
3030

3131
/// <summary>
3232
/// Registers a singleton service implementation. Singleton implementation instances are shared between all components.
3333
/// </summary>
3434
/// <typeparam name="TInterface">The service interface.</typeparam>
3535
/// <typeparam name="TClass">The service implementation.</typeparam>
3636
/// <param name="mappingNames">The mapping names. Include <b>null</b> in mapping names to override default provider.</param>
37-
void RegisterSingletonType<TInterface, TClass>(params string[] mappingNames) where TClass : TInterface;
37+
void AddSingleton<TInterface, TClass>(params string[] mappingNames) where TClass : TInterface;
3838

3939
/// <summary>
4040
/// Registers a service implementation. These implementation are not be shared between components.
4141
/// </summary>
4242
/// <typeparam name="TInterface">The service interface.</typeparam>
4343
/// <param name="value">The service implementation instance.</param>
4444
/// <param name="mappingNames">The mapping names. Include <b>null</b> in mapping names to override default provider.</param>
45-
void RegisterInstance<TInterface>(TInterface value, params string[] mappingNames);
45+
void AddTransient<TInterface>(TInterface value, params string[] mappingNames);
4646

4747
/// <summary>
4848
/// Registers a singleton service implementation. Singleton implementation instances are shared between all components.
4949
/// </summary>
5050
/// <typeparam name="TInterface">The service interface.</typeparam>
5151
/// <param name="value">The service implementation instance.</param>
5252
/// <param name="mappingNames">The mapping names. Include <b>null</b> in mapping names to override default provider.</param>
53-
void RegisterSingletonInstance<TInterface>(TInterface value, params string[] mappingNames);
53+
void AddSingleton<TInterface>(TInterface value, params string[] mappingNames);
5454

5555
/// <summary>
5656
/// Unregisters a type.
5757
/// </summary>
5858
/// <typeparam name="T">The type to unregister.</typeparam>
5959
/// <param name="mappingNames">The mapping names to unregister. If null or empty it will unregister everything.</param>
60-
void UnregisterType<T>(params string[] mappingNames);
60+
void Remove<T>(params string[] mappingNames);
6161

6262
/// <summary>
6363
/// Unregisters a type.
6464
/// </summary>
6565
/// <param name="type">The type to unregister.</param>
6666
/// <param name="mappingNames">The mapping names to unregister. If null or empty it will unregister everything.</param>
67-
void UnregisterType(Type type, params string[] mappingNames);
67+
void Remove(Type type, params string[] mappingNames);
6868
}
6969
}

Rocket.API/DependencyInjection/IDependencyRegistrator.cs renamed to Rocket.API/DependencyInjection/IServiceConfigurator.cs

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,16 @@
1-
namespace Rocket.API.DependencyInjection
1+
using Microsoft.Extensions.DependencyInjection;
2+
3+
namespace Rocket.API.DependencyInjection
24
{
35
/// <summary>
46
/// Registers services. The dependency registrator is automatically constructed and called before any plugin loads.
57
/// </summary>
6-
public interface IDependencyRegistrator
8+
public interface IServiceConfigurator
79
{
810
/// <summary>
911
/// Registers services.
1012
/// </summary>
1113
/// <param name="container">The dependency container.</param>
12-
/// <param name="resolver">The dependency resolver.</param>
13-
void Register(IDependencyContainer container, IDependencyResolver resolver);
14+
void ConfigureServices(IDependencyContainer container);
1415
}
1516
}

Rocket.API/Logging/ILogger.cs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,7 @@ public interface ILogger : IProxyableService
1515
/// <param name="message">The message to log.</param>
1616
/// <param name="exception">The related exception if one exists.</param>
1717
/// <param name="arguments">The message arguments. See <see cref="string.Format(string, object[])" /></param>
18-
void Log(string message, LogLevel level = LogLevel.Information, Exception exception = null,
19-
params object[] arguments);
18+
void Log(LogLevel level, object message, Exception exception = null, params object[] arguments);
2019

2120
/// <summary>
2221
/// Checks if a log level is enabled.

Rocket.API/Rocket.API.csproj

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,10 @@
1717
</PackageReference>
1818
</ItemGroup>
1919
<ItemGroup Condition="$(TargetFramework) == 'net461'">
20-
<Reference Include="System.Numerics.Vectors, Version=4.1.4.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/>
20+
<Reference Include="System.Numerics.Vectors, Version=4.1.4.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
21+
</ItemGroup>
22+
<ItemGroup>
23+
<PackageReference Include="Microsoft.Extensions.DependencyInjection.Abstractions" Version="2.2.0" />
2124
</ItemGroup>
2225

2326
<Import Project="$(MSBuildThisFileDirectory)..\props\SharedNuGet.props" />

Rocket.Console/Properties/DependencyRegistrator.cs

Lines changed: 0 additions & 18 deletions
This file was deleted.
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
using Microsoft.Extensions.DependencyInjection;
2+
using Rocket.API;
3+
using Rocket.API.DependencyInjection;
4+
using Rocket.API.User;
5+
using Rocket.Core.User;
6+
7+
namespace Rocket.Console.Properties
8+
{
9+
public class ServiceConfigurator : IServiceConfigurator
10+
{
11+
public void ConfigureServices(IDependencyContainer container)
12+
{
13+
container.AddSingleton<IHost, ConsoleHost>();
14+
container.AddSingleton<IUserManager, StdConsoleUserManager>("host", "stdconsole");
15+
}
16+
}
17+
}

Rocket.Core/DependencyInjection/RegistrationByConvention.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -45,10 +45,10 @@ private void RegisterAssembly(Assembly assembly)
4545
}
4646

4747
logger?.LogTrace("Registering assembly: " + assembly.FullName);
48-
foreach (Type type in assembly.GetTypesWithInterface<IDependencyRegistrator>())
48+
foreach (Type type in assembly.GetTypesWithInterface<IServiceConfigurator>())
4949
{
50-
logger?.LogTrace("\tRegistering from IDependencyRegistrator: " + type.FullName);
51-
((IDependencyRegistrator)Activator.CreateInstance(type)).Register(container, resolver);
50+
logger?.LogTrace("\tRegistering from IServiceConfigurator: " + type.FullName);
51+
((IServiceConfigurator)Activator.CreateInstance(type)).ConfigureServices(container);
5252
}
5353

5454
activatedAssemblies.Add(assembly.FullName);

Rocket.Core/DependencyInjection/UnityDependencyContainer.cs

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ private ILogger Logger
4545
public IDependencyContainer CreateChildContainer() => new UnityDependencyContainer(this);
4646
public IDependencyContainer ParentContainer { get; }
4747

48-
public void RegisterSingletonType<TInterface, TClass>(params string[] mappingNames) where TClass : TInterface
48+
public void AddSingleton<TInterface, TClass>(params string[] mappingNames) where TClass : TInterface
4949
{
5050
if (!typeof(ILogger).IsAssignableFrom(typeof(TInterface)))
5151
Logger?.LogTrace("\t\tRegistering singleton: <"
@@ -66,10 +66,10 @@ public void RegisterSingletonType<TInterface, TClass>(params string[] mappingNam
6666

6767
TInterface instance = container.Resolve<TInterface>(primaryName);
6868
foreach (string name in pendingNames)
69-
RegisterInstance(instance, name);
69+
AddTransient(instance, name);
7070
}
7171

72-
public void RegisterSingletonInstance<TInterface>(TInterface value, params string[] mappingNames)
72+
public void AddSingleton<TInterface>(TInterface value, params string[] mappingNames)
7373
{
7474
if (!typeof(ILogger).IsAssignableFrom(typeof(TInterface)))
7575
Logger?.LogTrace("\t\tRegistering singleton instance: <"
@@ -87,7 +87,7 @@ public void RegisterSingletonInstance<TInterface>(TInterface value, params strin
8787
container.RegisterInstance(mappingName, value, new ContainerControlledLifetimeManager());
8888
}
8989

90-
public void RegisterType<TInterface, TClass>(params string[] mappingNames) where TClass : TInterface
90+
public void AddTransient<TInterface, TClass>(params string[] mappingNames) where TClass : TInterface
9191
{
9292
if (!typeof(ILogger).IsAssignableFrom(typeof(TInterface)))
9393
Logger?.LogTrace("\t\tRegistering type: <"
@@ -105,7 +105,7 @@ public void RegisterType<TInterface, TClass>(params string[] mappingNames) where
105105
container.RegisterType<TInterface, TClass>(mappingName);
106106
}
107107

108-
public void RegisterInstance<TInterface>(TInterface value, params string[] mappingNames)
108+
public void AddTransient<TInterface>(TInterface value, params string[] mappingNames)
109109
{
110110
if (!typeof(ILogger).IsAssignableFrom(typeof(TInterface)))
111111
Logger?.LogTrace("\t\tRegistering type instance: <"
@@ -123,12 +123,12 @@ public void RegisterInstance<TInterface>(TInterface value, params string[] mappi
123123
container.RegisterInstance(mappingName, value);
124124
}
125125

126-
public void UnregisterType<T>(params string[] mappingNames)
126+
public void Remove<T>(params string[] mappingNames)
127127
{
128-
UnregisterType(typeof(T), mappingNames);
128+
Remove(typeof(T), mappingNames);
129129
}
130130

131-
public void UnregisterType(Type type, params string[] mappingNames)
131+
public void Remove(Type type, params string[] mappingNames)
132132
{
133133
foreach (IContainerRegistration registration in container.Registrations
134134
.Where(p => p.RegisteredType == type

Rocket.Core/Logging/BaseLogger.cs

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -53,8 +53,7 @@ protected BaseLogger(IDependencyContainer container)
5353

5454
public IDependencyContainer Container { get; }
5555

56-
public void Log(string message, LogLevel level = LogLevel.Information, Exception exception = null,
57-
params object[] arguments)
56+
public void Log(LogLevel level, object message, Exception exception = null, params object[] arguments)
5857
{
5958
if (!IsEnabled(level))
6059
return;
@@ -90,8 +89,7 @@ public static void SkipMethodFromLogging(MethodBase method)
9089
ignoredLoggingMethods.Add(method);
9190
}
9291

93-
public abstract void OnLog(string message, LogLevel level = LogLevel.Information, Exception exception = null,
94-
params object[] bindings);
92+
public abstract void OnLog(object message, LogLevel level = LogLevel.Information, Exception exception = null, params object[] bindings);
9593

9694
public static string GetLogLevelPrefix(LogLevel level)
9795
{

Rocket.Core/Logging/FileLogger.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ public void Backup(string file)
7676
}
7777
}
7878

79-
public override void OnLog(string message, LogLevel level = LogLevel.Information, Exception exception = null,
79+
public override void OnLog(object message, LogLevel level = LogLevel.Information, Exception exception = null,
8080
params object[] bindings)
8181
{
8282
if (string.IsNullOrEmpty(logFile))
@@ -104,7 +104,7 @@ public override void OnLog(string message, LogLevel level = LogLevel.Information
104104

105105
if (message != null)
106106
{
107-
WriteLine(level, message, bindings);
107+
WriteLine(level, message.ToString(), bindings);
108108
}
109109

110110
if (exception != null)

0 commit comments

Comments
 (0)