.NET 4.x Как изменять значение переменной bool, который находится в объекте, если я его передал в другой класс - C#
Формулировка задачи:
У меня есть статический объект Vars.MainConfig и в нем есть 2 bool Vars.MainConfig.Hello и Vars.MainConfig.Goodbye.
Так же у меня есть keyboard hook, которым вызывается функцию Work() при любом нажатие на клавиатуру.
Я хочу сделать динамическую систему биндов, что бы когда я нажимал допустим F1, менялось значения для Vars.MainConfig.Hello. А когда я нажимал на F2 менялось значение для Vars.MainConfig.Goodbye. Хочу получить класс который сможет работать с любыми bool и переключать их. Кол-во bool заранее не известно.
Вот мой класс
public class Binds { public static Dictionary<int, BindAction> List; public static Dictionary<string, BindAction> Commands; public Binds() { Commands = new Dictionary<string, BindAction> { { @"On\Off Hello", new BindAction(Vars.MainConfig.Hello) }, { @"On\Off Goodbye", new BindAction(Vars.MainConfig.Goodbye) } }; List = new Dictionary<int, BindAction> { { (int)Keys.F1, Commands[@"On\Off Hello"] }, { (int)Keys.F2, Commands[@"On\Off Goodbye"] } }; } public static void Work() { try { List[InterceptKeys.vkCode].Action = !List[InterceptKeys.vkCode].Action; Console.WriteLine("Hello: " + Vars.MainConfig.Hello); Console.WriteLine("Goodbye: " + Vars.MainConfig.Goodbye); } catch (KeyNotFoundException) { Console.WriteLine("Not binded"); } } public class BindAction { public BindAction(bool action) { Action = action; } public bool Action; } }
Решение задачи: «.NET 4.x Как изменять значение переменной bool, который находится в объекте, если я его передал в другой класс»
textual
Листинг программы
using System; using System.Collections.Generic; using System.Threading; namespace Binds { class Program { public static int Key = 0; static void Main(string[] args) { var test = new Test { SomeVariable = false, OtherVariable = true }; var bind = new Binds(test); while (true) { Console.Clear(); Key++; Binds.Work(); Console.WriteLine("Original SomeVariable: " + test.SomeVariable); Console.WriteLine("Original OtherVariable: " + test.OtherVariable); if (Key == 2) Key = 0; Thread.Sleep(500); } } } class Test { public bool SomeVariable { get; set; } public bool OtherVariable { get; set; } } class Binds { public static Dictionary<int, BindAction> List; public static Dictionary<string, BindAction> Commands; public Binds(Test test) { Commands = new Dictionary<string, BindAction> { { @"Вкл\Выкл SomeVariable", new BindAction { Action = test.SomeVariable } }, { @"Вкл\Выкл OtherVariable", new BindAction{ Action = test.OtherVariable } } }; List = new Dictionary<int, BindAction> { { 1, Commands[@"Вкл\Выкл SomeVariable"] }, { 2, Commands[@"Вкл\Выкл OtherVariable"] } }; } public static void Work() { try { Console.WriteLine("Action: " + List[Program.Key].Action); List[Program.Key].Action = !List[Program.Key].Action; Console.WriteLine("Changed Action: " + List[Program.Key].Action); } catch (KeyNotFoundException) { Console.WriteLine("Not binded"); } } public class BindAction { public int Key { get; set; } public bool Action { get; set; } } } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д