.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; }
- }
- }
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д