From b9cdad649a91944c6d387c79709fb3027cac01bf Mon Sep 17 00:00:00 2001 From: Sergey Chebotar Date: Tue, 20 Jun 2023 11:51:52 +0300 Subject: [PATCH] Tools refactoring --- RhSolutions.AddIn/Tools/ConvertTool.cs | 2 +- RhSolutions.AddIn/Tools/DxfTool.cs | 2 +- RhSolutions.AddIn/Tools/ExportTool.cs | 2 +- RhSolutions.AddIn/Tools/GuessTool.cs | 2 +- RhSolutions.AddIn/Tools/MergeTool.cs | 2 +- RhSolutions.AddIn/Tools/Tool.cs | 10 +++++----- RhSolutions.AddIn/Tools/ToolFactory.cs | 13 ++++++++----- 7 files changed, 18 insertions(+), 15 deletions(-) diff --git a/RhSolutions.AddIn/Tools/ConvertTool.cs b/RhSolutions.AddIn/Tools/ConvertTool.cs index c69c9cc..70a73cd 100644 --- a/RhSolutions.AddIn/Tools/ConvertTool.cs +++ b/RhSolutions.AddIn/Tools/ConvertTool.cs @@ -10,7 +10,7 @@ namespace RhSolutions.Tools; #endif internal class ConvertTool : Tool { - public ConvertTool(IServiceProvider provider) : base(provider) + public ConvertTool(ReaderFactory readerFactory, WriterFactory writerFactory) : base(readerFactory, writerFactory) { } diff --git a/RhSolutions.AddIn/Tools/DxfTool.cs b/RhSolutions.AddIn/Tools/DxfTool.cs index 266a9fa..fc4e6b7 100644 --- a/RhSolutions.AddIn/Tools/DxfTool.cs +++ b/RhSolutions.AddIn/Tools/DxfTool.cs @@ -9,7 +9,7 @@ namespace RhSolutions.Tools; #endif internal class DxfTool : Tool { - public DxfTool(IServiceProvider provider) : base(provider) + public DxfTool(ReaderFactory readerFactory, WriterFactory writerFactory) : base(readerFactory, writerFactory) { } diff --git a/RhSolutions.AddIn/Tools/ExportTool.cs b/RhSolutions.AddIn/Tools/ExportTool.cs index 14fd6e2..3b158a9 100644 --- a/RhSolutions.AddIn/Tools/ExportTool.cs +++ b/RhSolutions.AddIn/Tools/ExportTool.cs @@ -9,7 +9,7 @@ namespace RhSolutions.Tools; #endif internal class ExportTool : Tool { - public ExportTool(IServiceProvider provider) : base(provider) + public ExportTool(ReaderFactory readerFactory, WriterFactory writerFactory) : base(readerFactory, writerFactory) { } diff --git a/RhSolutions.AddIn/Tools/GuessTool.cs b/RhSolutions.AddIn/Tools/GuessTool.cs index 5452d59..a61c25c 100644 --- a/RhSolutions.AddIn/Tools/GuessTool.cs +++ b/RhSolutions.AddIn/Tools/GuessTool.cs @@ -6,7 +6,7 @@ namespace RhSolutions.Tools; internal class GuessTool : Tool { - public GuessTool(IServiceProvider provider) : base(provider) + public GuessTool(ReaderFactory readerFactory, WriterFactory writerFactory) : base(readerFactory, writerFactory) { } diff --git a/RhSolutions.AddIn/Tools/MergeTool.cs b/RhSolutions.AddIn/Tools/MergeTool.cs index 1575ec1..87dbe91 100644 --- a/RhSolutions.AddIn/Tools/MergeTool.cs +++ b/RhSolutions.AddIn/Tools/MergeTool.cs @@ -9,7 +9,7 @@ namespace RhSolutions.Tools; #endif internal class MergeTool : Tool { - public MergeTool(IServiceProvider provider) : base(provider) + public MergeTool(ReaderFactory readerFactory, WriterFactory writerFactory) : base(readerFactory, writerFactory) { } diff --git a/RhSolutions.AddIn/Tools/Tool.cs b/RhSolutions.AddIn/Tools/Tool.cs index 29fa854..c438ff9 100644 --- a/RhSolutions.AddIn/Tools/Tool.cs +++ b/RhSolutions.AddIn/Tools/Tool.cs @@ -14,16 +14,16 @@ internal abstract class Tool : IDisposable protected IReader _reader; protected IWriter _writer; - public Tool(IServiceProvider provider) + public Tool(ReaderFactory readerFactory, WriterFactory writerFactory) { - _readerFactory = provider.GetRequiredService(); - _writerFactory = provider.GetRequiredService(); + _readerFactory = readerFactory; + _writerFactory = writerFactory; } public void Dispose() { - _reader.Dispose(); - _writer.Dispose(); + _reader?.Dispose(); + _writer?.Dispose(); } public abstract void Execute(); diff --git a/RhSolutions.AddIn/Tools/ToolFactory.cs b/RhSolutions.AddIn/Tools/ToolFactory.cs index e974c05..09a6413 100644 --- a/RhSolutions.AddIn/Tools/ToolFactory.cs +++ b/RhSolutions.AddIn/Tools/ToolFactory.cs @@ -2,15 +2,18 @@ internal class ToolFactory { + static ReaderFactory readerFactory = RhSolutionsAddIn.ServiceProvider.GetService(); + static WriterFactory writerFactory = RhSolutionsAddIn.ServiceProvider.GetService(); + public Tool GetTool(string toolName) { Tool tool = toolName switch { - "export" => new ExportTool(RhSolutionsAddIn.ServiceProvider), - "convert" => new ConvertTool(RhSolutionsAddIn.ServiceProvider), - "merge" => new MergeTool(RhSolutionsAddIn.ServiceProvider), - "dxfexport" => new DxfTool(RhSolutionsAddIn.ServiceProvider), - "guess" => new GuessTool(RhSolutionsAddIn.ServiceProvider), + "export" => new ExportTool(readerFactory, writerFactory), + "convert" => new ConvertTool(readerFactory, writerFactory), + "merge" => new MergeTool(readerFactory, writerFactory), + "dxfexport" => new DxfTool(readerFactory, writerFactory), + "guess" => new GuessTool(readerFactory, writerFactory), "fillsleeves" => new SleevesTool(RhSolutionsAddIn.ServiceProvider), _ => throw new Exception($"Неизвестный инструмент {toolName}"), };