vpr-mitarbeiterverwaltung/Server/CommandManager.cs
SnapixLP | Tim G. c214be937c Initial Commit
2025-05-19 09:16:34 +02:00

44 lines
1.1 KiB
C#

using System.Reflection;
using Server.Commands;
namespace Server;
public class CommandManager
{
private readonly Dictionary<string, ICommand> _commands = new();
public CommandManager()
{
LoadCommands();
}
private void LoadCommands()
{
// Get all types implementing ICommand
var commandTypes = Assembly.GetExecutingAssembly()
.GetTypes()
.Where(t => typeof(ICommand).IsAssignableFrom(t) && !t.IsInterface && !t.IsAbstract);
foreach (var type in commandTypes)
{
// Create an instance of the command
if (Activator.CreateInstance(type) is ICommand command)
{
// Use the Executor property as the key
_commands[command.Executor] = command;
}
}
}
public void ExecuteCommand(string executor, params string[] args)
{
if (_commands.TryGetValue(executor, out var command))
{
command.Exec(args);
}
else
{
Console.WriteLine($"Command '{executor}' not found.");
}
}
}