Как отображать модули кода (.cs) как элементы в списке?

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

Моя цель состоит в том, чтобы иметь несколько файлы .cs (возможно, в дальнейшем расширении как файлы сценариев vb) в папка внутри проекта, которые правильно отображаются в списке основного представления и будут выполняться, если выбран соответствующий элемент в списке.

До сих пор я пытался создать список и все остальные элементы графического интерфейса (кнопки, текст и т. д.) и соединил список с привязываемой коллекцией модели сценария (которая на данный момент является собственным классом для целей тестирования и следует заменить правильными файлами .cs)

В приведенном ниже коде вы можете увидеть обходной путь с этим пользовательским классом и проверкой выбора для нескольких элементов списка.

private void Run_Click(object sender, RoutedEventArgs e)
        {
            //Show user the scripts which are being processed, these are the previous selected Scripts
            List<string> selectedList = new List<string>();
            foreach (ScriptModel selectedScript in MainListBox.SelectedItems)
            {
                selectedList.Add(selectedScript.Name.ToString());
            }
            //check if no Script was selected, and if so, just return/do nothing
            if (selectedList.Count() == 0) { return; }
            MessageBox.Show("The following Scripts will be processed: " + Environment.NewLine +
                    string.Join(Environment.NewLine, selectedList));


           //Call the Connection for Data-Export 

        }
private BindableCollection<ScriptModel> _scriptscollection=new BindableCollection<ScriptModel>();

public BindableCollection<ScriptModel> ScriptsCollection
        {
            get { return _scriptscollection; }
            set { _scriptscollection = value; }
        }

Я хотел бы знать, как я могу заменить (или связать) этот пользовательский класс с реальными файлами .cs (которые являются своего рода сценариями) в папке проекта, чтобы я мог отображать эти имена файлов и выбирать соответствующие файлы для выполнения . (поэтому соединение должно работать в обе стороны)

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

Не уверен, что следую. Вы хотите иметь возможность компилировать и выполнять пользовательские сценарии? Пожалуйста, объясните реальную проблему в вашем вопросе, так как я думаю, что список не имеет значения.

Chris Pickford 08.05.2019 12:09

Вы понимаете, что chsarp компилируется, а не интерпретируется? То, что вы показываете, по своей сути не является интерпретируемым сценарием, который вы можете просто запустить. Отображение кода в текстовом поле, безусловно, является самой простой частью этого.

Andy 08.05.2019 12:09

Эти «скрипты» закодированы разработчиком, но для расширения и максимально возможной модульности они должны оставаться в своем собственном файле с передачей определенной информации. Если вы выберете 2 «скрипта» и нажмете кнопку «Выполнить», должно быть одно соединение для внешних данных, а выбранные сценарии должны экспортировать определенные части набора данных в файл Excel.

Juretschko 08.05.2019 12:18
Это очень плохой подход к расширению вашего приложения. Изучите шаблоны проектирования и посмотрите, какие из них подходят для вашего варианта использования. Не читайте и не компилируйте «скрипты» с диска.
Chris Pickford 08.05.2019 12:31

Спасибо за совет. Я меняю дизайн для этого случая :) (в настоящее время читаю MVVM)

Juretschko 09.05.2019 13:34
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
5
51
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я полагаю, что вы слишком усложнили дело. Вот код, который найдет все файлы .cs в каталоге, а затем, выбрав один из них в ListBox, запустит этот файл.

Трудно точно сказать, о чем вы просите, но, надеюсь, это поможет.

XAML

<ListBox ItemsSource = "{Binding ScriptFiles}" SelectedItem = "{Binding SelectedScript}"/>

Код позади / ViewModel

public List<string> ScriptFiles => Directory.GetFiles(FilePath, "*.cs").ToList();

private string selectedScript;
public string SelectedScript
{
    get { return selectedScript; }
    set { selectedScript = value; Process.Start(value); }
}

Большое спасибо. Я попробую это после урока.

Juretschko 08.05.2019 12:25

если вы просто хотите: отобразить все файлы cs в определенном месте, запустить этот файл cs, когда вы нажмете на него в ListBox, тогда все будет в порядке.

user8478480 08.05.2019 12:28

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

Juretschko 08.05.2019 14:21

Рад слышать, дайте мне знать, если вам нужно что-нибудь еще. Я бы также посоветовал внимательно взглянуть на MVVM, если вы не знакомы, и понять, как это работает и т. д. :)

user8478480 08.05.2019 14:22

Другие вопросы по теме