aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--RhSolutions.AddIn/AddIn/RhSolutionsAddIn.cs2
-rw-r--r--RhSolutions.AddIn/Controllers/RibbonController.cs10
-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/MergeTool.cs2
-rw-r--r--RhSolutions.AddIn/Tools/Tool.cs (renamed from RhSolutions.AddIn/Tools/ToolBase.cs)4
-rw-r--r--RhSolutions.AddIn/Tools/ToolFactory.cs17
8 files changed, 27 insertions, 14 deletions
diff --git a/RhSolutions.AddIn/AddIn/RhSolutionsAddIn.cs b/RhSolutions.AddIn/AddIn/RhSolutionsAddIn.cs
index 4a73140..1cf6db1 100644
--- a/RhSolutions.AddIn/AddIn/RhSolutionsAddIn.cs
+++ b/RhSolutions.AddIn/AddIn/RhSolutionsAddIn.cs
@@ -26,6 +26,8 @@ public sealed class RhSolutionsAddIn : IExcelAddIn
.AddTransient<IExcelReader, RhExcelReader>()
.AddTransient<IExcelWriter, RhExcelWriter>();
+ Services.AddSingleton<ToolFactory>();
+
ServiceProvider = Services.BuildServiceProvider();
Configuration = ServiceProvider.GetService<IAddInConfiguration>();
Excel = ServiceProvider.GetService<Application>();
diff --git a/RhSolutions.AddIn/Controllers/RibbonController.cs b/RhSolutions.AddIn/Controllers/RibbonController.cs
index c815229..27d6053 100644
--- a/RhSolutions.AddIn/Controllers/RibbonController.cs
+++ b/RhSolutions.AddIn/Controllers/RibbonController.cs
@@ -64,14 +64,8 @@ public class RibbonController : ExcelRibbon
{
try
{
- using ToolBase tool = control.Id switch
- {
- "export" => new ExportTool(),
- "convert" => new ConvertTool(),
- "merge" => new MergeTool(),
- "dxfexport" => new DxfTool(),
- _ => throw new Exception("Неизвестный инструмент"),
- };
+ var toolFactory = RhSolutionsAddIn.ServiceProvider.GetService<ToolFactory>();
+ using Tool tool = toolFactory.GetTool(control.Id);
tool.Execute();
}
diff --git a/RhSolutions.AddIn/Tools/ConvertTool.cs b/RhSolutions.AddIn/Tools/ConvertTool.cs
index c9782a1..2d8ded4 100644
--- a/RhSolutions.AddIn/Tools/ConvertTool.cs
+++ b/RhSolutions.AddIn/Tools/ConvertTool.cs
@@ -8,7 +8,7 @@ namespace RhSolutions.Tools;
#if !NET472
[SupportedOSPlatform("windows")]
#endif
-internal class ConvertTool : ToolBase
+internal class ConvertTool : Tool
{
public override void Execute()
{
diff --git a/RhSolutions.AddIn/Tools/DxfTool.cs b/RhSolutions.AddIn/Tools/DxfTool.cs
index 291a2e1..4364e62 100644
--- a/RhSolutions.AddIn/Tools/DxfTool.cs
+++ b/RhSolutions.AddIn/Tools/DxfTool.cs
@@ -7,7 +7,7 @@ namespace RhSolutions.Tools;
#if !NET472
[SupportedOSPlatform("windows")]
#endif
-internal class DxfTool : ToolBase
+internal class DxfTool : Tool
{
public override void Execute()
{
diff --git a/RhSolutions.AddIn/Tools/ExportTool.cs b/RhSolutions.AddIn/Tools/ExportTool.cs
index c943cf1..838ce11 100644
--- a/RhSolutions.AddIn/Tools/ExportTool.cs
+++ b/RhSolutions.AddIn/Tools/ExportTool.cs
@@ -8,7 +8,7 @@ namespace RhSolutions.Tools;
#if !NET472
[SupportedOSPlatform("windows")]
#endif
-internal class ExportTool : ToolBase
+internal class ExportTool : Tool
{
public override void Execute()
{
diff --git a/RhSolutions.AddIn/Tools/MergeTool.cs b/RhSolutions.AddIn/Tools/MergeTool.cs
index 03cf104..e005007 100644
--- a/RhSolutions.AddIn/Tools/MergeTool.cs
+++ b/RhSolutions.AddIn/Tools/MergeTool.cs
@@ -11,7 +11,7 @@ namespace RhSolutions.Tools;
#if !NET472
[SupportedOSPlatform("windows")]
#endif
-internal class MergeTool : ToolBase
+internal class MergeTool : Tool
{
public override void Execute()
{
diff --git a/RhSolutions.AddIn/Tools/ToolBase.cs b/RhSolutions.AddIn/Tools/Tool.cs
index 518cefe..c5a9738 100644
--- a/RhSolutions.AddIn/Tools/ToolBase.cs
+++ b/RhSolutions.AddIn/Tools/Tool.cs
@@ -7,12 +7,12 @@ namespace RhSolutions.Tools;
#if !NET472
[SupportedOSPlatform("windows")]
#endif
-internal abstract class ToolBase : IDisposable
+internal abstract class Tool : IDisposable
{
protected readonly IExcelReader _reader;
protected readonly IExcelWriter _writer;
- public ToolBase()
+ public Tool()
{
_reader = RhSolutionsAddIn.ServiceProvider.GetRequiredService<IExcelReader>();
_writer = RhSolutionsAddIn.ServiceProvider.GetRequiredService<IExcelWriter>();
diff --git a/RhSolutions.AddIn/Tools/ToolFactory.cs b/RhSolutions.AddIn/Tools/ToolFactory.cs
new file mode 100644
index 0000000..8b746df
--- /dev/null
+++ b/RhSolutions.AddIn/Tools/ToolFactory.cs
@@ -0,0 +1,17 @@
+namespace RhSolutions.Tools;
+
+internal class ToolFactory
+{
+ public Tool GetTool(string toolName)
+ {
+ Tool tool = toolName switch
+ {
+ "export" => new ExportTool(),
+ "convert" => new ConvertTool(),
+ "merge" => new MergeTool(),
+ "dxfexport" => new DxfTool(),
+ _ => throw new Exception("Неизвестный инструмент"),
+ };
+ return tool;
+ }
+}