Initial commit

This commit is contained in:
Vladimir Solodovnikov
2024-10-01 00:55:06 +03:00
commit db1b8f8f74
54 changed files with 820 additions and 0 deletions
Binary file not shown.
Binary file not shown.
Binary file not shown.
+275
View File
@@ -0,0 +1,275 @@
{
"Version": 1,
"WorkspaceRootPath": "D:\\_pet\\CommandHandler\\",
"Documents": [
{
"AbsoluteMoniker": "D:0:0:{065989A4-DB65-4A02-AED7-A831E92C3429}|CommandHandler\\CommandHandler.csproj|d:\\_pet\\commandhandler\\commandhandler\\program.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{065989A4-DB65-4A02-AED7-A831E92C3429}|CommandHandler\\CommandHandler.csproj|solutionrelative:commandhandler\\program.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
},
{
"AbsoluteMoniker": "D:0:0:{065989A4-DB65-4A02-AED7-A831E92C3429}|CommandHandler\\CommandHandler.csproj|d:\\_pet\\commandhandler\\commandhandler\\navigation\\states\\navigationstatebase.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{065989A4-DB65-4A02-AED7-A831E92C3429}|CommandHandler\\CommandHandler.csproj|solutionrelative:commandhandler\\navigation\\states\\navigationstatebase.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
},
{
"AbsoluteMoniker": "D:0:0:{065989A4-DB65-4A02-AED7-A831E92C3429}|CommandHandler\\CommandHandler.csproj|d:\\_pet\\commandhandler\\commandhandler\\navigation\\inavigationstate.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{065989A4-DB65-4A02-AED7-A831E92C3429}|CommandHandler\\CommandHandler.csproj|solutionrelative:commandhandler\\navigation\\inavigationstate.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
},
{
"AbsoluteMoniker": "D:0:0:{065989A4-DB65-4A02-AED7-A831E92C3429}|CommandHandler\\CommandHandler.csproj|d:\\_pet\\commandhandler\\commandhandler\\applicationcontext.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{065989A4-DB65-4A02-AED7-A831E92C3429}|CommandHandler\\CommandHandler.csproj|solutionrelative:commandhandler\\applicationcontext.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
},
{
"AbsoluteMoniker": "D:0:0:{065989A4-DB65-4A02-AED7-A831E92C3429}|CommandHandler\\CommandHandler.csproj|d:\\_pet\\commandhandler\\commandhandler\\navigationcontext.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{065989A4-DB65-4A02-AED7-A831E92C3429}|CommandHandler\\CommandHandler.csproj|solutionrelative:commandhandler\\navigationcontext.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
},
{
"AbsoluteMoniker": "D:0:0:{065989A4-DB65-4A02-AED7-A831E92C3429}|CommandHandler\\CommandHandler.csproj|d:\\_pet\\commandhandler\\commandhandler\\navigation\\states\\navigationmainstate.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{065989A4-DB65-4A02-AED7-A831E92C3429}|CommandHandler\\CommandHandler.csproj|solutionrelative:commandhandler\\navigation\\states\\navigationmainstate.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
},
{
"AbsoluteMoniker": "D:0:0:{065989A4-DB65-4A02-AED7-A831E92C3429}|CommandHandler\\CommandHandler.csproj|d:\\_pet\\commandhandler\\commandhandler\\navigation\\states\\navigationsomestate.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{065989A4-DB65-4A02-AED7-A831E92C3429}|CommandHandler\\CommandHandler.csproj|solutionrelative:commandhandler\\navigation\\states\\navigationsomestate.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
},
{
"AbsoluteMoniker": "D:0:0:{065989A4-DB65-4A02-AED7-A831E92C3429}|CommandHandler\\CommandHandler.csproj|d:\\_pet\\commandhandler\\commandhandler\\commands\\emptycommand.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{065989A4-DB65-4A02-AED7-A831E92C3429}|CommandHandler\\CommandHandler.csproj|solutionrelative:commandhandler\\commands\\emptycommand.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
},
{
"AbsoluteMoniker": "D:0:0:{065989A4-DB65-4A02-AED7-A831E92C3429}|CommandHandler\\CommandHandler.csproj|d:\\_pet\\commandhandler\\commandhandler\\commands\\exitcommand.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{065989A4-DB65-4A02-AED7-A831E92C3429}|CommandHandler\\CommandHandler.csproj|solutionrelative:commandhandler\\commands\\exitcommand.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
},
{
"AbsoluteMoniker": "D:0:0:{065989A4-DB65-4A02-AED7-A831E92C3429}|CommandHandler\\CommandHandler.csproj|d:\\_pet\\commandhandler\\commandhandler\\navigation\\inavigationdrawer.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{065989A4-DB65-4A02-AED7-A831E92C3429}|CommandHandler\\CommandHandler.csproj|solutionrelative:commandhandler\\navigation\\inavigationdrawer.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
},
{
"AbsoluteMoniker": "D:0:0:{065989A4-DB65-4A02-AED7-A831E92C3429}|CommandHandler\\CommandHandler.csproj|d:\\_pet\\commandhandler\\commandhandler\\navigation\\inavigationcontext.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{065989A4-DB65-4A02-AED7-A831E92C3429}|CommandHandler\\CommandHandler.csproj|solutionrelative:commandhandler\\navigation\\inavigationcontext.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
},
{
"AbsoluteMoniker": "D:0:0:{065989A4-DB65-4A02-AED7-A831E92C3429}|CommandHandler\\CommandHandler.csproj|d:\\_pet\\commandhandler\\commandhandler\\commands\\combinedcommand.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{065989A4-DB65-4A02-AED7-A831E92C3429}|CommandHandler\\CommandHandler.csproj|solutionrelative:commandhandler\\commands\\combinedcommand.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
},
{
"AbsoluteMoniker": "D:0:0:{065989A4-DB65-4A02-AED7-A831E92C3429}|CommandHandler\\CommandHandler.csproj|d:\\_pet\\commandhandler\\commandhandler\\commands\\changenavigationstatecommand.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{065989A4-DB65-4A02-AED7-A831E92C3429}|CommandHandler\\CommandHandler.csproj|solutionrelative:commandhandler\\commands\\changenavigationstatecommand.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
},
{
"AbsoluteMoniker": "D:0:0:{065989A4-DB65-4A02-AED7-A831E92C3429}|CommandHandler\\CommandHandler.csproj|d:\\_pet\\commandhandler\\commandhandler\\commands\\icommand.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{065989A4-DB65-4A02-AED7-A831E92C3429}|CommandHandler\\CommandHandler.csproj|solutionrelative:commandhandler\\commands\\icommand.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
},
{
"AbsoluteMoniker": "D:0:0:{065989A4-DB65-4A02-AED7-A831E92C3429}|CommandHandler\\CommandHandler.csproj|d:\\_pet\\commandhandler\\commandhandler\\commands\\drawmenucommand.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{065989A4-DB65-4A02-AED7-A831E92C3429}|CommandHandler\\CommandHandler.csproj|solutionrelative:commandhandler\\commands\\drawmenucommand.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
}
],
"DocumentGroupContainers": [
{
"Orientation": 0,
"VerticalTabListWidth": 256,
"DocumentGroups": [
{
"DockedWidth": 200,
"SelectedChildIndex": 14,
"Children": [
{
"$type": "Document",
"DocumentIndex": 7,
"Title": "EmptyCommand.cs",
"DocumentMoniker": "D:\\_pet\\CommandHandler\\CommandHandler\\Commands\\EmptyCommand.cs",
"RelativeDocumentMoniker": "CommandHandler\\Commands\\EmptyCommand.cs",
"ToolTip": "D:\\_pet\\CommandHandler\\CommandHandler\\Commands\\EmptyCommand.cs",
"RelativeToolTip": "CommandHandler\\Commands\\EmptyCommand.cs",
"ViewState": "AQIAAAAAAAAAAAAAAAAAAAIAAAAbAAAA",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2024-09-29T11:00:11.826Z",
"EditorCaption": ""
},
{
"$type": "Document",
"DocumentIndex": 3,
"Title": "ApplicationContext.cs",
"DocumentMoniker": "D:\\_pet\\CommandHandler\\CommandHandler\\ApplicationContext.cs",
"RelativeDocumentMoniker": "CommandHandler\\ApplicationContext.cs",
"ToolTip": "D:\\_pet\\CommandHandler\\CommandHandler\\ApplicationContext.cs",
"RelativeToolTip": "CommandHandler\\ApplicationContext.cs",
"ViewState": "AQIAAAAAAAAAAAAAAAAAAAYAAAAAAAAA",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2024-09-29T10:42:27.896Z",
"EditorCaption": ""
},
{
"$type": "Document",
"DocumentIndex": 8,
"Title": "ExitCommand.cs",
"DocumentMoniker": "D:\\_pet\\CommandHandler\\CommandHandler\\Commands\\ExitCommand.cs",
"RelativeDocumentMoniker": "CommandHandler\\Commands\\ExitCommand.cs",
"ToolTip": "D:\\_pet\\CommandHandler\\CommandHandler\\Commands\\ExitCommand.cs",
"RelativeToolTip": "CommandHandler\\Commands\\ExitCommand.cs",
"ViewState": "AQIAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2024-09-29T10:40:17.744Z",
"EditorCaption": ""
},
{
"$type": "Document",
"DocumentIndex": 11,
"Title": "CombinedCommand.cs",
"DocumentMoniker": "D:\\_pet\\CommandHandler\\CommandHandler\\Commands\\CombinedCommand.cs",
"RelativeDocumentMoniker": "CommandHandler\\Commands\\CombinedCommand.cs",
"ToolTip": "D:\\_pet\\CommandHandler\\CommandHandler\\Commands\\CombinedCommand.cs",
"RelativeToolTip": "CommandHandler\\Commands\\CombinedCommand.cs",
"ViewState": "AQIAAAAAAAAAAAAAAAAAAAcAAAAJAAAA",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2024-09-29T10:33:09.006Z",
"EditorCaption": ""
},
{
"$type": "Document",
"DocumentIndex": 12,
"Title": "ChangeNavigationStateCommand.cs",
"DocumentMoniker": "D:\\_pet\\CommandHandler\\CommandHandler\\Commands\\ChangeNavigationStateCommand.cs",
"RelativeDocumentMoniker": "CommandHandler\\Commands\\ChangeNavigationStateCommand.cs",
"ToolTip": "D:\\_pet\\CommandHandler\\CommandHandler\\Commands\\ChangeNavigationStateCommand.cs",
"RelativeToolTip": "CommandHandler\\Commands\\ChangeNavigationStateCommand.cs",
"ViewState": "AQIAAAAAAAAAAAAAAAAAAAUAAAArAAAA",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2024-09-29T10:14:40.591Z",
"EditorCaption": ""
},
{
"$type": "Document",
"DocumentIndex": 10,
"Title": "INavigationContext.cs",
"DocumentMoniker": "D:\\_pet\\CommandHandler\\CommandHandler\\Navigation\\INavigationContext.cs",
"RelativeDocumentMoniker": "CommandHandler\\Navigation\\INavigationContext.cs",
"ToolTip": "D:\\_pet\\CommandHandler\\CommandHandler\\Navigation\\INavigationContext.cs",
"RelativeToolTip": "CommandHandler\\Navigation\\INavigationContext.cs",
"ViewState": "AQIAAAAAAAAAAAAAAAAAAAUAAAABAAAA",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2024-09-29T10:08:31.989Z",
"EditorCaption": ""
},
{
"$type": "Document",
"DocumentIndex": 4,
"Title": "NavigationContext.cs",
"DocumentMoniker": "D:\\_pet\\CommandHandler\\CommandHandler\\NavigationContext.cs",
"RelativeDocumentMoniker": "CommandHandler\\NavigationContext.cs",
"ToolTip": "D:\\_pet\\CommandHandler\\CommandHandler\\NavigationContext.cs",
"RelativeToolTip": "CommandHandler\\NavigationContext.cs",
"ViewState": "AQIAAAAAAAAAAAAAAAAAAAwAAAAqAAAA",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2024-09-29T09:58:09.096Z",
"EditorCaption": ""
},
{
"$type": "Document",
"DocumentIndex": 6,
"Title": "NavigationSomeState.cs",
"DocumentMoniker": "D:\\_pet\\CommandHandler\\CommandHandler\\Navigation\\States\\NavigationSomeState.cs",
"RelativeDocumentMoniker": "CommandHandler\\Navigation\\States\\NavigationSomeState.cs",
"ToolTip": "D:\\_pet\\CommandHandler\\CommandHandler\\Navigation\\States\\NavigationSomeState.cs",
"RelativeToolTip": "CommandHandler\\Navigation\\States\\NavigationSomeState.cs",
"ViewState": "AQIAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2024-09-29T09:55:23.946Z",
"EditorCaption": ""
},
{
"$type": "Document",
"DocumentIndex": 9,
"Title": "INavigationDrawer.cs",
"DocumentMoniker": "D:\\_pet\\CommandHandler\\CommandHandler\\Navigation\\INavigationDrawer.cs",
"RelativeDocumentMoniker": "CommandHandler\\Navigation\\INavigationDrawer.cs",
"ToolTip": "D:\\_pet\\CommandHandler\\CommandHandler\\Navigation\\INavigationDrawer.cs",
"RelativeToolTip": "CommandHandler\\Navigation\\INavigationDrawer.cs",
"ViewState": "AQIAAAAAAAAAAAAAAAAAAAIAAAAkAAAA",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2024-09-29T09:38:43.02Z",
"EditorCaption": ""
},
{
"$type": "Document",
"DocumentIndex": 14,
"Title": "DrawMenuCommand.cs",
"DocumentMoniker": "D:\\_pet\\CommandHandler\\CommandHandler\\Commands\\DrawMenuCommand.cs",
"RelativeDocumentMoniker": "CommandHandler\\Commands\\DrawMenuCommand.cs",
"ToolTip": "D:\\_pet\\CommandHandler\\CommandHandler\\Commands\\DrawMenuCommand.cs",
"RelativeToolTip": "CommandHandler\\Commands\\DrawMenuCommand.cs",
"ViewState": "AQIAAAAAAAAAAAAAAAAAAAwAAAAAAAAA",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2024-09-29T09:37:14.228Z",
"EditorCaption": ""
},
{
"$type": "Document",
"DocumentIndex": 1,
"Title": "NavigationStateBase.cs",
"DocumentMoniker": "D:\\_pet\\CommandHandler\\CommandHandler\\Navigation\\States\\NavigationStateBase.cs",
"RelativeDocumentMoniker": "CommandHandler\\Navigation\\States\\NavigationStateBase.cs",
"ToolTip": "D:\\_pet\\CommandHandler\\CommandHandler\\Navigation\\States\\NavigationStateBase.cs",
"RelativeToolTip": "CommandHandler\\Navigation\\States\\NavigationStateBase.cs",
"ViewState": "AQIAAAsAAAAAAAAAAAAYwEMAAAAFAAAA",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2024-09-29T09:35:15.519Z",
"EditorCaption": ""
},
{
"$type": "Document",
"DocumentIndex": 5,
"Title": "NavigationMainState.cs",
"DocumentMoniker": "D:\\_pet\\CommandHandler\\CommandHandler\\Navigation\\States\\NavigationMainState.cs",
"RelativeDocumentMoniker": "CommandHandler\\Navigation\\States\\NavigationMainState.cs",
"ToolTip": "D:\\_pet\\CommandHandler\\CommandHandler\\Navigation\\States\\NavigationMainState.cs",
"RelativeToolTip": "CommandHandler\\Navigation\\States\\NavigationMainState.cs",
"ViewState": "AQIAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2024-09-29T09:34:18.164Z",
"EditorCaption": ""
},
{
"$type": "Document",
"DocumentIndex": 13,
"Title": "ICommand.cs",
"DocumentMoniker": "D:\\_pet\\CommandHandler\\CommandHandler\\Commands\\ICommand.cs",
"RelativeDocumentMoniker": "CommandHandler\\Commands\\ICommand.cs",
"ToolTip": "D:\\_pet\\CommandHandler\\CommandHandler\\Commands\\ICommand.cs",
"RelativeToolTip": "CommandHandler\\Commands\\ICommand.cs",
"ViewState": "AQIAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2024-09-29T09:33:01.859Z",
"EditorCaption": ""
},
{
"$type": "Document",
"DocumentIndex": 2,
"Title": "INavigationState.cs",
"DocumentMoniker": "D:\\_pet\\CommandHandler\\CommandHandler\\Navigation\\INavigationState.cs",
"RelativeDocumentMoniker": "CommandHandler\\Navigation\\INavigationState.cs",
"ToolTip": "D:\\_pet\\CommandHandler\\CommandHandler\\Navigation\\INavigationState.cs",
"RelativeToolTip": "CommandHandler\\Navigation\\INavigationState.cs",
"ViewState": "AQIAAAAAAAAAAAAAAAAqwAYAAAAwAAAA",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2024-09-29T09:31:29.308Z",
"EditorCaption": ""
},
{
"$type": "Document",
"DocumentIndex": 0,
"Title": "Program.cs",
"DocumentMoniker": "D:\\_pet\\CommandHandler\\CommandHandler\\Program.cs",
"RelativeDocumentMoniker": "CommandHandler\\Program.cs",
"ToolTip": "D:\\_pet\\CommandHandler\\CommandHandler\\Program.cs",
"RelativeToolTip": "CommandHandler\\Program.cs",
"ViewState": "AQIAAAAAAAAAAAAAAAAAAAwAAAAFAAAA",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2024-09-29T09:13:51.526Z",
"EditorCaption": ""
}
]
}
]
}
]
}
Binary file not shown.
Binary file not shown.
Binary file not shown.
+25
View File
@@ -0,0 +1,25 @@
Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 17
VisualStudioVersion = 17.10.35122.118
MinimumVisualStudioVersion = 10.0.40219.1
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CommandHandler", "CommandHandler\CommandHandler.csproj", "{065989A4-DB65-4A02-AED7-A831E92C3429}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Release|Any CPU = Release|Any CPU
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{065989A4-DB65-4A02-AED7-A831E92C3429}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{065989A4-DB65-4A02-AED7-A831E92C3429}.Debug|Any CPU.Build.0 = Debug|Any CPU
{065989A4-DB65-4A02-AED7-A831E92C3429}.Release|Any CPU.ActiveCfg = Release|Any CPU
{065989A4-DB65-4A02-AED7-A831E92C3429}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {A3F21B54-7B86-4635-8112-5996A510F1D5}
EndGlobalSection
EndGlobal
+6
View File
@@ -0,0 +1,6 @@
namespace CommandHandler;
internal static class ApplicationContext
{
public static bool IsRan { get; set; } = true;
}
+10
View File
@@ -0,0 +1,10 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net8.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
</PropertyGroup>
</Project>
@@ -0,0 +1,13 @@
using CommandHandler.Navigation;
namespace CommandHandler.Commands;
internal class ChangeNavigationStateCommand(INavigationContext context, INavigationState state) : ICommand
{
public Task Execute()
{
context.SetState(state);
return Task.CompletedTask;
}
}
@@ -0,0 +1,12 @@
namespace CommandHandler.Commands;
internal class CombinedCommand(params ICommand[] commands) : ICommand
{
public async Task Execute()
{
foreach (var command in commands)
{
await command.Execute();
}
}
}
@@ -0,0 +1,12 @@
using CommandHandler.Navigation;
namespace CommandHandler.Commands;
internal class DrawMenuCommand(INavigationDrawer navigationDrawer) : ICommand
{
public Task Execute()
{
Console.Write(navigationDrawer.DrawNavigationMenu());
return Task.CompletedTask;
}
}
+9
View File
@@ -0,0 +1,9 @@
namespace CommandHandler.Commands;
internal class EmptyCommand : ICommand
{
public Task Execute()
{
return Task.CompletedTask;
}
}
+10
View File
@@ -0,0 +1,10 @@
namespace CommandHandler.Commands;
internal class ExitCommand : ICommand
{
public Task Execute()
{
ApplicationContext.IsRan = false;
return Task.CompletedTask;
}
}
+6
View File
@@ -0,0 +1,6 @@
namespace CommandHandler.Commands;
internal interface ICommand
{
Task Execute();
}
@@ -0,0 +1,9 @@
using CommandHandler.Commands;
namespace CommandHandler.Navigation;
internal interface INavigationContext
{
void SetState(INavigationState navigationState);
ICommand GetCommand(string message);
}
@@ -0,0 +1,6 @@
namespace CommandHandler.Navigation;
internal interface INavigationDrawer
{
string DrawNavigationMenu();
}
@@ -0,0 +1,9 @@
using CommandHandler.Commands;
namespace CommandHandler.Navigation;
internal interface INavigationState
{
void SetContext(INavigationContext context);
ICommand GetCommand(string message);
}
@@ -0,0 +1,12 @@
using CommandHandler.Commands;
namespace CommandHandler.Navigation.States;
internal class NavigationMainState : NavigationStateBase, INavigationDrawer
{
public NavigationMainState()
{
Commands.Add("/some", () => ChangeNavigationState(new NavigationSomeState()));
Commands.Add("/exit", () => new ExitCommand());
}
}
@@ -0,0 +1,9 @@
namespace CommandHandler.Navigation.States;
internal class NavigationSomeState : NavigationStateBase, INavigationDrawer
{
public NavigationSomeState()
{
Commands.Add("/back", () => ChangeNavigationState(new NavigationMainState()));
}
}
@@ -0,0 +1,69 @@
using System.Text;
using CommandHandler.Commands;
namespace CommandHandler.Navigation.States;
internal abstract class NavigationStateBase : INavigationState, INavigationDrawer
{
private INavigationContext? _context;
protected readonly IDictionary<string, Func<ICommand>> Commands = new Dictionary<string, Func<ICommand>>();
protected ICommand ChangeNavigationState(INavigationState newState)
{
if (_context == null)
{
throw new InvalidOperationException();
}
var commands = new List<ICommand>
{
new ChangeNavigationStateCommand(_context, newState)
};
if (newState is INavigationDrawer drawer)
{
commands.Add(new DrawMenuCommand(drawer));
}
return new CombinedCommand([.. commands]);
}
public void SetContext(INavigationContext context)
{
_context = context;
}
public ICommand GetCommand(string message)
{
var parts = message.Split(' ', StringSplitOptions.RemoveEmptyEntries);
if (parts.Length <= 0)
{
return new EmptyCommand();
}
if (Commands.TryGetValue(parts[0], out var commandFactory))
{
return commandFactory();
}
if (this is INavigationDrawer navigationDrawer)
{
return new DrawMenuCommand(navigationDrawer);
}
throw new NotImplementedException();
}
public string DrawNavigationMenu()
{
var builder = new StringBuilder();
foreach (var command in Commands.Keys)
{
builder.AppendLine(command);
}
return builder.ToString();
}
}
+25
View File
@@ -0,0 +1,25 @@
using CommandHandler.Commands;
using CommandHandler.Navigation;
namespace CommandHandler;
internal class NavigationContext : INavigationContext
{
private INavigationState? _navigationState = null;
public void SetState(INavigationState navigationState)
{
_navigationState = navigationState;
_navigationState.SetContext(this);
}
public ICommand GetCommand(string message)
{
if (_navigationState == null)
{
throw new InvalidOperationException();
}
return _navigationState.GetCommand(message);
}
}
+25
View File
@@ -0,0 +1,25 @@
using CommandHandler;
using CommandHandler.Navigation;
using CommandHandler.Navigation.States;
Console.WriteLine("Hello, World!");
INavigationContext context = new NavigationContext();
context.SetState(new NavigationMainState());
while (ApplicationContext.IsRan)
{
try
{
var line = Console.ReadLine();
if (!string.IsNullOrEmpty(line))
{
var command = context.GetCommand(line);
await command.Execute();
}
}
catch (Exception ex)
{
Console.WriteLine(ex.ToString());
}
}
@@ -0,0 +1,23 @@
{
"runtimeTarget": {
"name": ".NETCoreApp,Version=v8.0",
"signature": ""
},
"compilationOptions": {},
"targets": {
".NETCoreApp,Version=v8.0": {
"CommandHandler/1.0.0": {
"runtime": {
"CommandHandler.dll": {}
}
}
}
},
"libraries": {
"CommandHandler/1.0.0": {
"type": "project",
"serviceable": false,
"sha512": ""
}
}
}
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,12 @@
{
"runtimeOptions": {
"tfm": "net8.0",
"framework": {
"name": "Microsoft.NETCore.App",
"version": "8.0.0"
},
"configProperties": {
"System.Runtime.Serialization.EnableUnsafeBinaryFormatterSerialization": false
}
}
}
@@ -0,0 +1,73 @@
{
"format": 1,
"restore": {
"D:\\_pet\\CommandHandler\\CommandHandler\\CommandHandler.csproj": {}
},
"projects": {
"D:\\_pet\\CommandHandler\\CommandHandler\\CommandHandler.csproj": {
"version": "1.0.0",
"restore": {
"projectUniqueName": "D:\\_pet\\CommandHandler\\CommandHandler\\CommandHandler.csproj",
"projectName": "CommandHandler",
"projectPath": "D:\\_pet\\CommandHandler\\CommandHandler\\CommandHandler.csproj",
"packagesPath": "C:\\Users\\Local\\.nuget\\packages\\",
"outputPath": "D:\\_pet\\CommandHandler\\CommandHandler\\obj\\",
"projectStyle": "PackageReference",
"fallbackFolders": [
"C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages"
],
"configFilePaths": [
"C:\\Users\\Local\\AppData\\Roaming\\NuGet\\NuGet.Config",
"C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.FallbackLocation.config",
"C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.Offline.config"
],
"originalTargetFrameworks": [
"net8.0"
],
"sources": {
"C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {},
"C:\\Program Files\\dotnet\\library-packs": {},
"https://api.nuget.org/v3/index.json": {}
},
"frameworks": {
"net8.0": {
"targetAlias": "net8.0",
"projectReferences": {}
}
},
"warningProperties": {
"warnAsError": [
"NU1605"
]
},
"restoreAuditProperties": {
"enableAudit": "true",
"auditLevel": "low",
"auditMode": "direct"
}
},
"frameworks": {
"net8.0": {
"targetAlias": "net8.0",
"imports": [
"net461",
"net462",
"net47",
"net471",
"net472",
"net48",
"net481"
],
"assetTargetFallback": true,
"warn": true,
"frameworkReferences": {
"Microsoft.NETCore.App": {
"privateAssets": "all"
}
},
"runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\8.0.303/PortableRuntimeIdentifierGraph.json"
}
}
}
}
}
@@ -0,0 +1,16 @@
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
<RestoreSuccess Condition=" '$(RestoreSuccess)' == '' ">True</RestoreSuccess>
<RestoreTool Condition=" '$(RestoreTool)' == '' ">NuGet</RestoreTool>
<ProjectAssetsFile Condition=" '$(ProjectAssetsFile)' == '' ">$(MSBuildThisFileDirectory)project.assets.json</ProjectAssetsFile>
<NuGetPackageRoot Condition=" '$(NuGetPackageRoot)' == '' ">$(UserProfile)\.nuget\packages\</NuGetPackageRoot>
<NuGetPackageFolders Condition=" '$(NuGetPackageFolders)' == '' ">C:\Users\Local\.nuget\packages\;C:\Program Files (x86)\Microsoft Visual Studio\Shared\NuGetPackages</NuGetPackageFolders>
<NuGetProjectStyle Condition=" '$(NuGetProjectStyle)' == '' ">PackageReference</NuGetProjectStyle>
<NuGetToolVersion Condition=" '$(NuGetToolVersion)' == '' ">6.10.2</NuGetToolVersion>
</PropertyGroup>
<ItemGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
<SourceRoot Include="C:\Users\Local\.nuget\packages\" />
<SourceRoot Include="C:\Program Files (x86)\Microsoft Visual Studio\Shared\NuGetPackages\" />
</ItemGroup>
</Project>
@@ -0,0 +1,2 @@
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />
@@ -0,0 +1,4 @@
// <autogenerated />
using System;
using System.Reflection;
[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETCoreApp,Version=v8.0", FrameworkDisplayName = ".NET 8.0")]
@@ -0,0 +1,23 @@
//------------------------------------------------------------------------------
// <auto-generated>
// Этот код создан программой.
// Исполняемая версия:4.0.30319.42000
//
// Изменения в этом файле могут привести к неправильной работе и будут потеряны в случае
// повторной генерации кода.
// </auto-generated>
//------------------------------------------------------------------------------
using System;
using System.Reflection;
[assembly: System.Reflection.AssemblyCompanyAttribute("CommandHandler")]
[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")]
[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")]
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0")]
[assembly: System.Reflection.AssemblyProductAttribute("CommandHandler")]
[assembly: System.Reflection.AssemblyTitleAttribute("CommandHandler")]
[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]
// Создано классом WriteCodeFragment MSBuild.
@@ -0,0 +1 @@
b00336f8c345e5d220e40134875b15cf23c50819f270edf27184e393f9300e1d
@@ -0,0 +1,13 @@
is_global = true
build_property.TargetFramework = net8.0
build_property.TargetPlatformMinVersion =
build_property.UsingMicrosoftNETSdkWeb =
build_property.ProjectTypeGuids =
build_property.InvariantGlobalization =
build_property.PlatformNeutralAssembly =
build_property.EnforceExtendedAnalyzerRules =
build_property._SupportedPlatformList = Linux,macOS,Windows
build_property.RootNamespace = CommandHandler
build_property.ProjectDir = D:\_pet\CommandHandler\CommandHandler\
build_property.EnableComHosting =
build_property.EnableGeneratedComInterfaceComImportInterop =
@@ -0,0 +1,8 @@
// <auto-generated/>
global using global::System;
global using global::System.Collections.Generic;
global using global::System.IO;
global using global::System.Linq;
global using global::System.Net.Http;
global using global::System.Threading;
global using global::System.Threading.Tasks;
@@ -0,0 +1 @@
7ef3779f57dc73359cc343d0a60ec8f6230f106a21e51a375f218f147ed10117
@@ -0,0 +1,14 @@
D:\_pet\CommandHandler\CommandHandler\bin\Debug\net8.0\CommandHandler.exe
D:\_pet\CommandHandler\CommandHandler\bin\Debug\net8.0\CommandHandler.deps.json
D:\_pet\CommandHandler\CommandHandler\bin\Debug\net8.0\CommandHandler.runtimeconfig.json
D:\_pet\CommandHandler\CommandHandler\bin\Debug\net8.0\CommandHandler.dll
D:\_pet\CommandHandler\CommandHandler\bin\Debug\net8.0\CommandHandler.pdb
D:\_pet\CommandHandler\CommandHandler\obj\Debug\net8.0\CommandHandler.GeneratedMSBuildEditorConfig.editorconfig
D:\_pet\CommandHandler\CommandHandler\obj\Debug\net8.0\CommandHandler.AssemblyInfoInputs.cache
D:\_pet\CommandHandler\CommandHandler\obj\Debug\net8.0\CommandHandler.AssemblyInfo.cs
D:\_pet\CommandHandler\CommandHandler\obj\Debug\net8.0\CommandHandler.csproj.CoreCompileInputs.cache
D:\_pet\CommandHandler\CommandHandler\obj\Debug\net8.0\CommandHandler.dll
D:\_pet\CommandHandler\CommandHandler\obj\Debug\net8.0\refint\CommandHandler.dll
D:\_pet\CommandHandler\CommandHandler\obj\Debug\net8.0\CommandHandler.pdb
D:\_pet\CommandHandler\CommandHandler\obj\Debug\net8.0\CommandHandler.genruntimeconfig.cache
D:\_pet\CommandHandler\CommandHandler\obj\Debug\net8.0\ref\CommandHandler.dll
Binary file not shown.
@@ -0,0 +1 @@
cd94cab78cf7a91496f15ad1c9882d88e67cd025dd9397bb1bd46e3750057d49
Binary file not shown.
Binary file not shown.
+79
View File
@@ -0,0 +1,79 @@
{
"version": 3,
"targets": {
"net8.0": {}
},
"libraries": {},
"projectFileDependencyGroups": {
"net8.0": []
},
"packageFolders": {
"C:\\Users\\Local\\.nuget\\packages\\": {},
"C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages": {}
},
"project": {
"version": "1.0.0",
"restore": {
"projectUniqueName": "D:\\_pet\\CommandHandler\\CommandHandler\\CommandHandler.csproj",
"projectName": "CommandHandler",
"projectPath": "D:\\_pet\\CommandHandler\\CommandHandler\\CommandHandler.csproj",
"packagesPath": "C:\\Users\\Local\\.nuget\\packages\\",
"outputPath": "D:\\_pet\\CommandHandler\\CommandHandler\\obj\\",
"projectStyle": "PackageReference",
"fallbackFolders": [
"C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages"
],
"configFilePaths": [
"C:\\Users\\Local\\AppData\\Roaming\\NuGet\\NuGet.Config",
"C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.FallbackLocation.config",
"C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.Offline.config"
],
"originalTargetFrameworks": [
"net8.0"
],
"sources": {
"C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {},
"C:\\Program Files\\dotnet\\library-packs": {},
"https://api.nuget.org/v3/index.json": {}
},
"frameworks": {
"net8.0": {
"targetAlias": "net8.0",
"projectReferences": {}
}
},
"warningProperties": {
"warnAsError": [
"NU1605"
]
},
"restoreAuditProperties": {
"enableAudit": "true",
"auditLevel": "low",
"auditMode": "direct"
}
},
"frameworks": {
"net8.0": {
"targetAlias": "net8.0",
"imports": [
"net461",
"net462",
"net47",
"net471",
"net472",
"net48",
"net481"
],
"assetTargetFallback": true,
"warn": true,
"frameworkReferences": {
"Microsoft.NETCore.App": {
"privateAssets": "all"
}
},
"runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\8.0.303/PortableRuntimeIdentifierGraph.json"
}
}
}
}
+8
View File
@@ -0,0 +1,8 @@
{
"version": 2,
"dgSpecHash": "9NuCRCX47NU=",
"success": true,
"projectFilePath": "D:\\_pet\\CommandHandler\\CommandHandler\\CommandHandler.csproj",
"expectedPackageFiles": [],
"logs": []
}