using System; using TrustedUninstaller.Shared.Actions; using TrustedUninstaller.Shared.Tasks; using YamlDotNet.Core.Events; using YamlDotNet.Serialization; namespace TrustedUninstaller.Shared.Parser { internal class TaskActionResolver : INodeTypeResolver { public bool Resolve(NodeEvent? nodeEvent, ref Type currentType) { if (!currentType.IsInterface || currentType != typeof(ITaskAction)) { return false; } switch (nodeEvent?.Tag.Value) { case "!file:": currentType = typeof(FileAction); return true; case "!service:": currentType = typeof(ServiceAction); return true; case "!user:": currentType = typeof(UserAction); return true; case "!run:": currentType = typeof(RunAction); return true; case "!powerShell:": currentType = typeof(PowerShellAction); return true; case "!shortcut:": currentType = typeof(ShortcutAction); return true; case "!cmd:": currentType = typeof(CmdAction); return true; case "!scheduledTask:": currentType = typeof(ScheduledTaskAction); return true; case "!lineInFile:": currentType = typeof(LineInFileAction); return true; case "!registryKey:": currentType = typeof(RegistryKeyAction); return true; case "!registryValue:": currentType = typeof(RegistryValueAction); return true; case "!appx:": currentType = typeof(AppxAction); return true; case "!systemPackage:": currentType = typeof(SystemPackageAction); return true; case "!taskKill:": currentType = typeof(TaskKillAction); return true; case "!update:": currentType = typeof(UpdateAction); return true; case "!writeStatus:": currentType = typeof(WriteStatusAction); return true; default: return false; } } } }