.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 заранее не известно.

Вот мой класс

Листинг программы
  1. public class Binds
  2. {
  3. public static Dictionary<int, BindAction> List;
  4. public static Dictionary<string, BindAction> Commands;
  5. public Binds()
  6. {
  7. Commands = new Dictionary<string, BindAction>
  8. {
  9. { @"On\Off Hello", new BindAction(Vars.MainConfig.Hello) },
  10. { @"On\Off Goodbye", new BindAction(Vars.MainConfig.Goodbye) }
  11. };
  12. List = new Dictionary<int, BindAction>
  13. {
  14. { (int)Keys.F1, Commands[@"On\Off Hello"] },
  15. { (int)Keys.F2, Commands[@"On\Off Goodbye"] }
  16. };
  17. }
  18. public static void Work()
  19. {
  20. try
  21. {
  22. List[InterceptKeys.vkCode].Action = !List[InterceptKeys.vkCode].Action;
  23. Console.WriteLine("Hello: " + Vars.MainConfig.Hello);
  24. Console.WriteLine("Goodbye: " + Vars.MainConfig.Goodbye);
  25. }
  26. catch (KeyNotFoundException)
  27. {
  28. Console.WriteLine("Not binded");
  29. }
  30. }
  31. public class BindAction
  32. {
  33. public BindAction(bool action)
  34. {
  35. Action = action;
  36. }
  37. public bool Action;
  38. }
  39. }

Решение задачи: «.NET 4.x Как изменять значение переменной bool, который находится в объекте, если я его передал в другой класс»

textual
Листинг программы
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Threading;
  4.  
  5. namespace Binds
  6. {
  7.     class Program
  8.     {
  9.         public static int Key = 0;
  10.         static void Main(string[] args)
  11.         {
  12.             var test = new Test
  13.             {
  14.                 SomeVariable = false,
  15.                 OtherVariable = true
  16.             };
  17.  
  18.             var bind = new Binds(test);
  19.  
  20.             while (true)
  21.             {
  22.                 Console.Clear();
  23.                 Key++;
  24.  
  25.                 Binds.Work();
  26.  
  27.                 Console.WriteLine("Original SomeVariable: " + test.SomeVariable);
  28.                 Console.WriteLine("Original OtherVariable: " + test.OtherVariable);
  29.  
  30.                 if (Key == 2)
  31.                     Key = 0;
  32.                 Thread.Sleep(500);
  33.             }
  34.         }
  35.     }
  36.  
  37.     class Test
  38.     {
  39.         public bool SomeVariable { get; set; }
  40.         public bool OtherVariable { get; set; }
  41.     }
  42.  
  43.     class Binds
  44.     {
  45.         public static Dictionary<int, BindAction> List;
  46.         public static Dictionary<string, BindAction> Commands;
  47.         public Binds(Test test)
  48.         {
  49.             Commands = new Dictionary<string, BindAction>
  50.             {
  51.                 { @"Вкл\Выкл SomeVariable", new BindAction { Action = test.SomeVariable } },
  52.                 { @"Вкл\Выкл OtherVariable", new BindAction{ Action = test.OtherVariable } }
  53.             };
  54.  
  55.             List = new Dictionary<int, BindAction>
  56.             {
  57.                 { 1, Commands[@"Вкл\Выкл SomeVariable"] },
  58.                 { 2, Commands[@"Вкл\Выкл OtherVariable"] }
  59.             };
  60.         }
  61.  
  62.         public static void Work()
  63.         {
  64.             try
  65.             {
  66.                 Console.WriteLine("Action: " + List[Program.Key].Action);
  67.                 List[Program.Key].Action = !List[Program.Key].Action;
  68.                 Console.WriteLine("Changed Action: " + List[Program.Key].Action);
  69.             }
  70.             catch (KeyNotFoundException)
  71.             {
  72.                 Console.WriteLine("Not binded");
  73.             }
  74.         }
  75.  
  76.         public class BindAction
  77.         {
  78.             public int Key { get; set; }
  79.             public bool Action { get; set; }
  80.         }
  81.     }
  82. }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

10   голосов , оценка 4 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы