Как сделать шаблон Factory в C #, чтобы выбрать, какой графический интерфейс я хочу: WPF или Console? - PullRequest
0 голосов
/ 11 января 2019

Я делаю программу калькулятора. Я сделал четыре проекта.

  1. библиотека классов, которая имеет логику калькулятора.
  2. графический калькулятор в приложении wpf.
  3. Калькулятор графического интерфейса в консольном приложении.
  4. Библиотека классов фабрики, которая является "проектом запуска".

Приложения с графическим интерфейсом (WPF или Console) прекрасно работают! у них есть «библиотека логических классов» в своих зависимостях.

Теперь я хочу, чтобы мой клиент выбрал графический интерфейс, который он хочет, поэтому я написал для него библиотеку классов Factory и сделал ее «проектом запуска».

Но это не работает, потому что сообщение об ошибке «Невозможно запустить библиотеку классов напрямую».

Что делать?

спасибо вперед.

Ответы [ 2 ]

0 голосов
/ 11 января 2019

Самый простой способ - создать другое приложение, единственной задачей которого является запуск версии GUI или версии CLI.

Вы можете сделать это в выделенном console application, но затем вы увидите всплывающее окно console box на небольшую секунду.

В качестве альтернативы вы можете использовать приложение WinForms и использовать следующие строки кода:

using System.Diagnostics;

static class Program
{
    /// <summary>
    /// The main entry point for the application.
    /// </summary>
    [STAThread]
    static void Main(string [] args)
    {
        // disable these lines:
        //Application.EnableVisualStyles();
        //Application.SetCompatibleTextRenderingDefault(false);
        //Application.Run(new Form1());

        //read settings file or parse arguments

        //start the GUI or CLI process
        Process process = new Process();
        process.StartInfo.FileName = "some.exe";
        process.Start();
        //optional
        process.WaitForExit();
    }
}
0 голосов
/ 11 января 2019

Библиотека классов не может быть стартовым проектом. Это должно быть exe, а не dll.

Что бы я сделал:

  • создайте что-то вроде start.bat, который спрашивает пользователя, какую версию графического интерфейса он хочет. Затем пакетный запуск wpf.exe или console.exe

или

  • создайте простое консольное приложение, которое будет делать то же самое. После запуска exec он отключится.

Консольное приложение или пакет также могут считывать некоторые записи реестра и на основании этого вызова подходить exec.

...