.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; }
        }
    }
}

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


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

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

10   голосов , оценка 4 из 5
Похожие ответы