Превращение ввода пользователя в командную строку в c# - PullRequest
0 голосов
/ 05 апреля 2020

Я делал меню отладки, и мне было интересно, есть ли способ взять пользовательский ввод и запустить его в виде строки кода во время работы приложения.

вот некоторый код, который поможет вам понять что я имею в виду:

using System;
using System.Threading;

namespace ExampleCode
{
    class Program
    {
        public static void debugMenu()
        {
            string codeToRun = Console.ReadLine();
            //execute codeToRun as a line of code
        }
    }
}

так что если вход был "debugMenu ();" тогда он перезапустит метод.

это очень поможет с отладкой, потому что я мог бы найти и протестировать любой метод, пока приложение еще работает.

Спасибо за ответы!

Ответы [ 2 ]

0 голосов
/ 05 апреля 2020

Если все, что вы хотите сделать, это вызвать методы во время отладки, то вы можете использовать Немедленное окно Visual Studio , которое позволяет динамически выполнять код C# в отладчике. Это позволит вам вызывать другой метод во время отладки без необходимости изменения кода.

Кроме того, обратите внимание, что Visual Studio позволяет перетаскивать указатель инструкций во время отладки, чтобы изменить ход программы.

Редактировать: для меня это звучит так, как будто вам необходимо ознакомиться с модульным тестированием .

0 голосов
/ 05 апреля 2020

Прежде всего, у вас есть некоторые ошибки здесь, точка входа в любую программу - это основной метод, который я не вижу здесь нигде. Теперь, чтобы ответить на ваш вопрос, есть способ, но не совсем то, что вы думаете. Вы должны иметь оператор switch примерно так:

static void Main(string[] args)
{           
    string userInput = Console.ReadLine();
    switch(userInput)
    {
        case "debugMenu()":
            debugMenu();
        break;
        case "whatever":
            anotherFunction();
        break;
    }
}

public static void debugMenu()
{
    //whatever you want this function to do
}

public static void anotherFunction()
{
    //whatever you want this function to do
}

Лично я бы не рекомендовал этого, но он полностью функционален для строки и сама функция не имеет значения. Есть и другие способы, но они требуют рефлексии, и, поскольку вы боретесь с основами, я бы не хотел вас больше сбивать с толку

Редактировать: Более того, ваша идея не является хорошей практикой для отладки, если вам нужно проверить функциональность функции я бы порекомендовал вам поискать, как выполнить модульный тест, и они также отлаживаемы

...