From e56cdfd5015afa3b7be36774d89a31969a0b4d45 Mon Sep 17 00:00:00 2001 From: Ogoun Date: Sat, 14 Dec 2019 02:52:56 +0300 Subject: [PATCH] Refactoring --- ConfigurationTests/ConfigurationTests.csproj | 2 +- ConfigurationTests/Program.cs | 2 +- .../DependencyInjectionTests.csproj | 18 ++++++ DependencyInjectionTests/Program.cs | 59 +++++++++++++++++++ DependencyInjectionTests/config.ini | 1 + TestApp/Program.cs | 5 +- TestPipeLine/Consumer/Program.cs | 3 +- TestPipeLine/Processor/Program.cs | 3 +- TestPipeLine/Source/Program.cs | 2 +- ZeroLevel.sln | 16 ++++- ZeroLevel/Services/Bootstrap.cs | 4 +- .../Services/DependencyInjection/Container.cs | 6 +- .../Logging/FixSizeLogMessageBuffer.cs | 1 + ZeroLevel/Services/Logging/ILogComposer.cs | 4 +- .../Services/Logging/ILogMessageBuffer.cs | 3 +- ZeroLevel/Services/Logging/ILogger.cs | 2 +- .../Logging/Implementation/ConsoleLogger.cs | 3 +- .../Logging/Implementation/DelegateLogger.cs | 2 +- .../Implementation/EncryptedFileLog.cs | 2 +- ZeroLevel/Services/Logging/Log.cs | 30 +++++----- ZeroLevel/Services/Logging/LogLevel.cs | 2 +- .../Services/Logging/LogLevelNameMapping.cs | 3 +- ZeroLevel/Services/Logging/LogRouterr.cs | 3 +- .../Logging/NoLimitedLogMessageBuffer.cs | 5 +- 24 files changed, 137 insertions(+), 44 deletions(-) create mode 100644 DependencyInjectionTests/DependencyInjectionTests.csproj create mode 100644 DependencyInjectionTests/Program.cs create mode 100644 DependencyInjectionTests/config.ini diff --git a/ConfigurationTests/ConfigurationTests.csproj b/ConfigurationTests/ConfigurationTests.csproj index ebe4228..c638033 100644 --- a/ConfigurationTests/ConfigurationTests.csproj +++ b/ConfigurationTests/ConfigurationTests.csproj @@ -2,7 +2,7 @@ Exe - netcoreapp3.1 + netcoreapp2.2 diff --git a/ConfigurationTests/Program.cs b/ConfigurationTests/Program.cs index 2143611..233b626 100644 --- a/ConfigurationTests/Program.cs +++ b/ConfigurationTests/Program.cs @@ -28,7 +28,7 @@ namespace ConfigurationTests Console.WriteLine($"\tAppName: {config.Service.AppName}"); Console.WriteLine($"\tServiceGroup: {config.Service.ServiceGroup}"); Console.WriteLine($"\tServiceType: {config.Service.ServiceType}"); - + Console.ReadKey(); } } diff --git a/DependencyInjectionTests/DependencyInjectionTests.csproj b/DependencyInjectionTests/DependencyInjectionTests.csproj new file mode 100644 index 0000000..18ef193 --- /dev/null +++ b/DependencyInjectionTests/DependencyInjectionTests.csproj @@ -0,0 +1,18 @@ + + + + Exe + netcoreapp3.0 + + + + + + + + + Always + + + + diff --git a/DependencyInjectionTests/Program.cs b/DependencyInjectionTests/Program.cs new file mode 100644 index 0000000..8b741ab --- /dev/null +++ b/DependencyInjectionTests/Program.cs @@ -0,0 +1,59 @@ +using System; +using ZeroLevel; +using ZeroLevel.Patterns.DependencyInjection; +using ZeroLevel.Services.Reflection; + +namespace DependencyInjectionTests +{ + public interface IDependencyContract + { + bool Invoke(); + } + + public class DependencyImplementation + : IDependencyContract + { + public bool Invoke() => true; + } + + public interface IMyContract + { + string Run(); + } + + public class MyImplementation + : IMyContract + { + [Resolve] + private IDependencyContract _dependency; + [Parameter("delimeter")] + private string _delimeter; + [Resolve] + private IConfiguration _config; + + public string Run() => $"{_config.First("var")}{_delimeter}{_dependency.Invoke()}"; + } + + + class Program + { + static void Main(string[] args) + { + + + var config = Configuration.Create(); + config.Append("var", "bool isWorking"); + Injector.Default.Register(); + Injector.Default.Register(); + Injector.Default.Register(config); + Injector.Default.Save("delimeter", " = "); + + var instance = new MyImplementation(); + Injector.Default.Compose(instance); + Console.WriteLine(instance.Run()); + Console.ReadKey(); + + Injector.Dispose(); + } + } +} diff --git a/DependencyInjectionTests/config.ini b/DependencyInjectionTests/config.ini new file mode 100644 index 0000000..0cbcf83 --- /dev/null +++ b/DependencyInjectionTests/config.ini @@ -0,0 +1 @@ +url=github.com \ No newline at end of file diff --git a/TestApp/Program.cs b/TestApp/Program.cs index 54bab42..171e65e 100644 --- a/TestApp/Program.cs +++ b/TestApp/Program.cs @@ -1,9 +1,6 @@ using Newtonsoft.Json; using System; -using System.Collections.Generic; -using System.Linq; -using System.Reflection; -using System.Text; +using ZeroLevel; using ZeroLevel.Services.Web; namespace TestApp diff --git a/TestPipeLine/Consumer/Program.cs b/TestPipeLine/Consumer/Program.cs index c44e298..937ae33 100644 --- a/TestPipeLine/Consumer/Program.cs +++ b/TestPipeLine/Consumer/Program.cs @@ -1,4 +1,5 @@ using ZeroLevel; +using ZeroLevel.Logging; namespace Consumer { @@ -7,7 +8,7 @@ namespace Consumer static void Main(string[] args) { Bootstrap.Startup(args) - .EnableConsoleLog(ZeroLevel.Services.Logging.LogLevel.FullStandart) + .EnableConsoleLog(LogLevel.FullStandart) .UseDiscovery() .Run() .WaitWhileStatus(ZeroServiceStatus.Running) diff --git a/TestPipeLine/Processor/Program.cs b/TestPipeLine/Processor/Program.cs index 62556ed..100d790 100644 --- a/TestPipeLine/Processor/Program.cs +++ b/TestPipeLine/Processor/Program.cs @@ -1,4 +1,5 @@ using ZeroLevel; +using ZeroLevel.Logging; namespace Processor { @@ -7,7 +8,7 @@ namespace Processor static void Main(string[] args) { Bootstrap.Startup(args) - .EnableConsoleLog(ZeroLevel.Services.Logging.LogLevel.FullStandart) + .EnableConsoleLog(LogLevel.FullStandart) .UseDiscovery() .Run() .WaitWhileStatus(ZeroServiceStatus.Running) diff --git a/TestPipeLine/Source/Program.cs b/TestPipeLine/Source/Program.cs index cb7a349..4ce61f2 100644 --- a/TestPipeLine/Source/Program.cs +++ b/TestPipeLine/Source/Program.cs @@ -7,7 +7,7 @@ namespace Source static void Main(string[] args) { Bootstrap.Startup(args) - .EnableConsoleLog(ZeroLevel.Services.Logging.LogLevel.FullStandart) + .EnableConsoleLog(ZeroLevel.Logging.LogLevel.FullStandart) .UseDiscovery() .Run() .WaitWhileStatus(ZeroServiceStatus.Running) diff --git a/ZeroLevel.sln b/ZeroLevel.sln index aa575be..a074370 100644 --- a/ZeroLevel.sln +++ b/ZeroLevel.sln @@ -31,7 +31,9 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ZeroLevel.SQL", "ZeroLevel. EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ZeroNetworkMonitor", "ZeroNetworkMonitor\ZeroNetworkMonitor.csproj", "{EECF6EA0-6D9C-4B69-9CA3-23357C04B84C}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ConfigurationTests", "ConfigurationTests\ConfigurationTests.csproj", "{E37785CE-E75A-49FB-B17F-16A0F2C6D656}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ConfigurationTests", "ConfigurationTests\ConfigurationTests.csproj", "{E37785CE-E75A-49FB-B17F-16A0F2C6D656}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DependencyInjectionTests", "DependencyInjectionTests\DependencyInjectionTests.csproj", "{665B38E3-A5F2-4AD0-946B-209D80C1AA40}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution @@ -199,6 +201,18 @@ Global {E37785CE-E75A-49FB-B17F-16A0F2C6D656}.Release|x64.Build.0 = Release|Any CPU {E37785CE-E75A-49FB-B17F-16A0F2C6D656}.Release|x86.ActiveCfg = Release|Any CPU {E37785CE-E75A-49FB-B17F-16A0F2C6D656}.Release|x86.Build.0 = Release|Any CPU + {665B38E3-A5F2-4AD0-946B-209D80C1AA40}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {665B38E3-A5F2-4AD0-946B-209D80C1AA40}.Debug|Any CPU.Build.0 = Debug|Any CPU + {665B38E3-A5F2-4AD0-946B-209D80C1AA40}.Debug|x64.ActiveCfg = Debug|Any CPU + {665B38E3-A5F2-4AD0-946B-209D80C1AA40}.Debug|x64.Build.0 = Debug|Any CPU + {665B38E3-A5F2-4AD0-946B-209D80C1AA40}.Debug|x86.ActiveCfg = Debug|Any CPU + {665B38E3-A5F2-4AD0-946B-209D80C1AA40}.Debug|x86.Build.0 = Debug|Any CPU + {665B38E3-A5F2-4AD0-946B-209D80C1AA40}.Release|Any CPU.ActiveCfg = Release|Any CPU + {665B38E3-A5F2-4AD0-946B-209D80C1AA40}.Release|Any CPU.Build.0 = Release|Any CPU + {665B38E3-A5F2-4AD0-946B-209D80C1AA40}.Release|x64.ActiveCfg = Release|Any CPU + {665B38E3-A5F2-4AD0-946B-209D80C1AA40}.Release|x64.Build.0 = Release|Any CPU + {665B38E3-A5F2-4AD0-946B-209D80C1AA40}.Release|x86.ActiveCfg = Release|Any CPU + {665B38E3-A5F2-4AD0-946B-209D80C1AA40}.Release|x86.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/ZeroLevel/Services/Bootstrap.cs b/ZeroLevel/Services/Bootstrap.cs index 771788c..a920d61 100644 --- a/ZeroLevel/Services/Bootstrap.cs +++ b/ZeroLevel/Services/Bootstrap.cs @@ -1,11 +1,9 @@ using System; using System.IO; -using System.Linq; using System.Net; using System.Reflection; +using ZeroLevel.Logging; using ZeroLevel.Network; -using ZeroLevel.Services; -using ZeroLevel.Services.Logging; namespace ZeroLevel { diff --git a/ZeroLevel/Services/DependencyInjection/Container.cs b/ZeroLevel/Services/DependencyInjection/Container.cs index fa9ff51..38b1777 100644 --- a/ZeroLevel/Services/DependencyInjection/Container.cs +++ b/ZeroLevel/Services/DependencyInjection/Container.cs @@ -7,7 +7,7 @@ using System.Threading; using ZeroLevel.Services.Collections; namespace ZeroLevel.Patterns.DependencyInjection -{ +{ internal sealed class Container : IContainer { @@ -1287,9 +1287,7 @@ namespace ZeroLevel.Patterns.DependencyInjection public object Get(Type type, string key) { - MethodInfo method = typeof(IEverythingStorage).GetMethod("Get"); - MethodInfo genericMethod = method.MakeGenericMethod(type); - return genericMethod.Invoke(_everything.Value, new object[] { key }); + return _everything.Value.Get(type, key); } public void SaveOrUpdate(string key, T value) diff --git a/ZeroLevel/Services/Logging/FixSizeLogMessageBuffer.cs b/ZeroLevel/Services/Logging/FixSizeLogMessageBuffer.cs index b14d3eb..ec5afdd 100644 --- a/ZeroLevel/Services/Logging/FixSizeLogMessageBuffer.cs +++ b/ZeroLevel/Services/Logging/FixSizeLogMessageBuffer.cs @@ -1,5 +1,6 @@ using System; using System.Threading; +using ZeroLevel.Logging; using ZeroLevel.Services.Collections; namespace ZeroLevel.Services.Logging diff --git a/ZeroLevel/Services/Logging/ILogComposer.cs b/ZeroLevel/Services/Logging/ILogComposer.cs index bc2fe1d..9eb68dc 100644 --- a/ZeroLevel/Services/Logging/ILogComposer.cs +++ b/ZeroLevel/Services/Logging/ILogComposer.cs @@ -1,4 +1,6 @@ -namespace ZeroLevel.Services.Logging +using ZeroLevel.Logging; + +namespace ZeroLevel.Logging { public interface ILogComposer { diff --git a/ZeroLevel/Services/Logging/ILogMessageBuffer.cs b/ZeroLevel/Services/Logging/ILogMessageBuffer.cs index e2ff0d0..94084b5 100644 --- a/ZeroLevel/Services/Logging/ILogMessageBuffer.cs +++ b/ZeroLevel/Services/Logging/ILogMessageBuffer.cs @@ -1,6 +1,7 @@ using System; +using ZeroLevel.Logging; -namespace ZeroLevel.Services.Logging +namespace ZeroLevel.Logging { /// /// Message queue for logging diff --git a/ZeroLevel/Services/Logging/ILogger.cs b/ZeroLevel/Services/Logging/ILogger.cs index 3205647..15c8e45 100644 --- a/ZeroLevel/Services/Logging/ILogger.cs +++ b/ZeroLevel/Services/Logging/ILogger.cs @@ -1,6 +1,6 @@ using System; -namespace ZeroLevel.Services.Logging +namespace ZeroLevel.Logging { public interface ILogger : IDisposable { diff --git a/ZeroLevel/Services/Logging/Implementation/ConsoleLogger.cs b/ZeroLevel/Services/Logging/Implementation/ConsoleLogger.cs index cadb5ff..4326aba 100644 --- a/ZeroLevel/Services/Logging/Implementation/ConsoleLogger.cs +++ b/ZeroLevel/Services/Logging/Implementation/ConsoleLogger.cs @@ -1,6 +1,7 @@ using System; +using ZeroLevel.Services.Logging; -namespace ZeroLevel.Services.Logging.Implementation +namespace ZeroLevel.Logging { public sealed class ConsoleLogger : ILogger diff --git a/ZeroLevel/Services/Logging/Implementation/DelegateLogger.cs b/ZeroLevel/Services/Logging/Implementation/DelegateLogger.cs index 999858d..50fc09a 100644 --- a/ZeroLevel/Services/Logging/Implementation/DelegateLogger.cs +++ b/ZeroLevel/Services/Logging/Implementation/DelegateLogger.cs @@ -1,6 +1,6 @@ using System; -namespace ZeroLevel.Services.Logging.Implementation +namespace ZeroLevel.Logging { public sealed class DelegateLogger : ILogger { diff --git a/ZeroLevel/Services/Logging/Implementation/EncryptedFileLog.cs b/ZeroLevel/Services/Logging/Implementation/EncryptedFileLog.cs index 7d52c25..17d9066 100644 --- a/ZeroLevel/Services/Logging/Implementation/EncryptedFileLog.cs +++ b/ZeroLevel/Services/Logging/Implementation/EncryptedFileLog.cs @@ -4,7 +4,7 @@ using System.IO; using System.Text; using ZeroLevel.Services.Encryption; -namespace ZeroLevel.Services.Logging.Implementation +namespace ZeroLevel.Logging { public class EncryptedFileLogOptions { diff --git a/ZeroLevel/Services/Logging/Log.cs b/ZeroLevel/Services/Logging/Log.cs index 84c3702..3c9ed9d 100644 --- a/ZeroLevel/Services/Logging/Log.cs +++ b/ZeroLevel/Services/Logging/Log.cs @@ -1,7 +1,5 @@ using System; using ZeroLevel.Logging; -using ZeroLevel.Services.Logging; -using ZeroLevel.Services.Logging.Implementation; namespace ZeroLevel { @@ -20,20 +18,7 @@ namespace ZeroLevel _router = new LogRouter(); } - #endregion Ctor - - private static string FormatMessage(string line, params object[] args) - { - if (args == null || args.Length == 0) return line; - try - { - return string.Format(line, args); - } - catch - { - return line; - } - } + #endregion Ctor #region Logging @@ -254,5 +239,18 @@ namespace ZeroLevel } #endregion Disposable + + private static string FormatMessage(string line, params object[] args) + { + if (args == null || args.Length == 0) return line; + try + { + return string.Format(line, args); + } + catch + { + return line; + } + } } } \ No newline at end of file diff --git a/ZeroLevel/Services/Logging/LogLevel.cs b/ZeroLevel/Services/Logging/LogLevel.cs index d5089ba..f5cbe23 100644 --- a/ZeroLevel/Services/Logging/LogLevel.cs +++ b/ZeroLevel/Services/Logging/LogLevel.cs @@ -1,6 +1,6 @@ using System; -namespace ZeroLevel.Services.Logging +namespace ZeroLevel.Logging { /// /// Enum contains possible types of messages to write to the log diff --git a/ZeroLevel/Services/Logging/LogLevelNameMapping.cs b/ZeroLevel/Services/Logging/LogLevelNameMapping.cs index 96147b2..ebf6383 100644 --- a/ZeroLevel/Services/Logging/LogLevelNameMapping.cs +++ b/ZeroLevel/Services/Logging/LogLevelNameMapping.cs @@ -1,6 +1,7 @@ using System.Collections.Generic; +using ZeroLevel.Logging; -namespace ZeroLevel.Services.Logging +namespace ZeroLevel.Logging { internal static class LogLevelNameMapping { diff --git a/ZeroLevel/Services/Logging/LogRouterr.cs b/ZeroLevel/Services/Logging/LogRouterr.cs index de5275c..8e508dc 100644 --- a/ZeroLevel/Services/Logging/LogRouterr.cs +++ b/ZeroLevel/Services/Logging/LogRouterr.cs @@ -1,8 +1,9 @@ using System; using System.Collections.Generic; using System.Threading; +using ZeroLevel.Services.Logging; -namespace ZeroLevel.Services.Logging +namespace ZeroLevel.Logging { internal sealed class LogRouter : ILogger, diff --git a/ZeroLevel/Services/Logging/NoLimitedLogMessageBuffer.cs b/ZeroLevel/Services/Logging/NoLimitedLogMessageBuffer.cs index 7a04dd7..d2b4252 100644 --- a/ZeroLevel/Services/Logging/NoLimitedLogMessageBuffer.cs +++ b/ZeroLevel/Services/Logging/NoLimitedLogMessageBuffer.cs @@ -1,9 +1,10 @@ using System; using System.Collections.Concurrent; -namespace ZeroLevel.Services.Logging +namespace ZeroLevel.Logging { - internal sealed class NoLimitedLogMessageBuffer : ILogMessageBuffer + internal sealed class NoLimitedLogMessageBuffer + : ILogMessageBuffer { private readonly BlockingCollection> _messageQueue = new BlockingCollection>();