如何在 C# 中制作工厂模式以选择我想要的 GUI:WPF 或控制台?
How to make Factory pattern in c# to choose which GUI i want : WPF or Console?
我制作了一个计算器程序。我做了四个项目。
- class 具有计算器逻辑的库。
- wpf 应用程序中的计算器 gui。
- 控制台应用程序中的计算器 gui。
- 工厂 class 库,即 "startup project"。
GUI 应用程序(WPF 或控制台)运行良好!他们的依赖项中有 "logic class library"。
现在我想让我的客户选择他想要的 GUI,所以我为他写了 Factory class 库并制作它 "startup project"。
但它不起作用,因为错误消息 "class library cannot be started directly"。
怎么办?
提前致谢。
Class 库不能作为启动项目。必须是exe,不是dll。
我会做的是:
- 创建类似 start.bat 的东西,询问用户他想要哪个 gui 版本。然后批处理将 运行 wpf.exe 或 console.exe
或
- 创建将执行相同操作的简单控制台应用程序。启动 exec 后它将关闭。
控制台应用程序或批处理也可能读取一些注册表项并基于该调用适当的执行程序。
最简单的方法是创建另一个应用程序,唯一的任务是启动 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();
}
}
我制作了一个计算器程序。我做了四个项目。
- class 具有计算器逻辑的库。
- wpf 应用程序中的计算器 gui。
- 控制台应用程序中的计算器 gui。
- 工厂 class 库,即 "startup project"。
GUI 应用程序(WPF 或控制台)运行良好!他们的依赖项中有 "logic class library"。
现在我想让我的客户选择他想要的 GUI,所以我为他写了 Factory class 库并制作它 "startup project"。
但它不起作用,因为错误消息 "class library cannot be started directly"。
怎么办?
提前致谢。
Class 库不能作为启动项目。必须是exe,不是dll。
我会做的是:
- 创建类似 start.bat 的东西,询问用户他想要哪个 gui 版本。然后批处理将 运行 wpf.exe 或 console.exe
或
- 创建将执行相同操作的简单控制台应用程序。启动 exec 后它将关闭。
控制台应用程序或批处理也可能读取一些注册表项并基于该调用适当的执行程序。
最简单的方法是创建另一个应用程序,唯一的任务是启动 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();
}
}