Задать вопрос
Ответы пользователя по тегу .NET
  • Как реализовать эту функцию на C#?

    @nexus478
    Вам требуется паттерн Команда, он позволит избежать большого количества if-ов и при этом даст возможность добавлять гибко добавлять новые команды. Почитайте про этот паттерн на метаните, внимательно изучите схемы и постарайтесь понять, какую роль играет каждый участник паттерна.
    Примерно это может выглядеть вот так
    public interface ICommand
    {
        void Execute(CommandParameter parameter);
    }
    
    public class CommandParameter
    {
        public int Id { get; set; }
        public int Count { get; set; }
        // сюда можно добавлять сколько угодно новых параметров, 
        // которые вам требуется записывать в файл
    }
    
    public class AddHealthCommand : ICommand
    {
        public void Execute(CommandParameter parameter)
        {
            File.WriteAllText(@"D:\path.txt", $"player.modav health {parameter.Count}");
        }
    }
    
    public class AddItemCommand : ICommand
    {
        public void Execute(CommandParameter parameter)
        {
            File.WriteAllText(@"D:\path.txt", $"player.additem {parameter.Id} {parameter.Count}");
        }
    }
    
    public class CommandWriter
    {
        public void WriteCommand(ICommand command, CommandParameter parameter)
        {
            command.Execute(parameter);
        }
    }


    Например, пользователь решил добавить здоровья, это будет выглядеть так
    var addHealthParameter = new CommandParameter {Count = value}; //value пришло откуда-то из интерфейса
    commandWriter.WriteCommand(new AddHealthCommand(), addHealthParameter);

    Если пользователь захочет добавить предмет, то запись будет выглядеть так
    var addItemParameter = new CommandParameter {Id = id, Count = count};
    commandWriter.WriteCommand(new AddItemCommand(), addItemParameter);


    И если вам захочется добавить новую команду, вы просто делаете наследника ICommand и реализуете там логику добавления. А класс CommandParameter даст вам гибкость в добавлении новых параметров в команды.

    У вас WPF или WinForms приложение, так ведь?
    Ответ написан
    Комментировать