aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSergey Chebotar <s.chebotar@gmail.com>2023-06-20 11:51:52 +0300
committerSergey Chebotar <s.chebotar@gmail.com>2023-06-20 11:51:52 +0300
commitb9cdad649a91944c6d387c79709fb3027cac01bf (patch)
tree2c949304796febdb48ccc49b30d6ece3c421666f
parent2c44c5d2df75edd0d6f032612d6ecba5cf7450a1 (diff)
Tools refactoring
-rw-r--r--RhSolutions.AddIn/Tools/ConvertTool.cs2
-rw-r--r--RhSolutions.AddIn/Tools/DxfTool.cs2
-rw-r--r--RhSolutions.AddIn/Tools/ExportTool.cs2
-rw-r--r--RhSolutions.AddIn/Tools/GuessTool.cs2
-rw-r--r--RhSolutions.AddIn/Tools/MergeTool.cs2
-rw-r--r--RhSolutions.AddIn/Tools/Tool.cs10
-rw-r--r--RhSolutions.AddIn/Tools/ToolFactory.cs13
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<ReaderFactory>();
- _writerFactory = provider.GetRequiredService<WriterFactory>();
+ _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<ReaderFactory>();
+ static WriterFactory writerFactory = RhSolutionsAddIn.ServiceProvider.GetService<WriterFactory>();
+
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}"),
};