C# 应用程序的两种启动行为

C# 应用程序的两种启动行为,c#,wpf,C#,Wpf,我有一个应用程序,我希望有两种不同的启动行为。 例如:如果用户从桌面或应用程序快捷方式运行应用程序,应用程序应该运行并请求输入 但是,我的应用程序也被设置为启动应用程序。如果应用程序在计算机重新启动时自动启动,则它不应要求用户输入并具有不同的流(因为它将记住首选项) 这种行为如何实现? 可能,我想有两个不同的构造函数重载,在两种情况下会做不同的事情。但是,如何选择在适当的时间运行哪个构造函数(启动应用程序运行/桌面应用程序运行)? 如何在WPF中实现这一点?您是否考虑过使用启动参数。 当您自动运

我有一个应用程序,我希望有两种不同的启动行为。
例如:如果用户从桌面或应用程序快捷方式运行应用程序,应用程序应该运行并请求输入

但是,我的应用程序也被设置为启动应用程序。如果应用程序在计算机重新启动时自动启动,则它不应要求用户输入并具有不同的流(因为它将记住首选项)

这种行为如何实现? 可能,我想有两个不同的构造函数重载,在两种情况下会做不同的事情。但是,如何选择在适当的时间运行哪个构造函数(启动应用程序运行/桌面应用程序运行)?

如何在WPF中实现这一点?

您是否考虑过使用启动参数。 当您自动运行它时,您可以设置一个参数

“MyApplication.exe-自动启动”

安装快捷方式时,应用程序可以无参数启动

“MyApplication.exe”

在应用程序中,“Main”方法使用if子句并做出相应的反应。 为此,请检查main方法中的参数“string[]args”

静态void Main(字符串[]参数)


您是否考虑过使用启动参数。 当您自动运行它时,您可以设置一个参数

“MyApplication.exe-自动启动”

安装快捷方式时,应用程序可以无参数启动

“MyApplication.exe”

在应用程序中,“Main”方法使用if子句并做出相应的反应。 为此,请检查main方法中的参数“string[]args”

静态void Main(字符串[]参数)


我以前在不同的类中做过这项工作,因为根据配置的不同,行为会有很大的不同,我希望完全将案例彼此隔离

解析命令行参数后,可以实例化一个类并使用以下命令调用一个方法:

string customerClassName = string.Format("DataProcessor.{0}Processor", ConfigurationManager.AppSettings.Get("Customer"));
Type customerClass = Assembly.GetExecutingAssembly().GetType(customerClassName);
ConstructorInfo ctor = customerClass.GetConstructor(System.Type.EmptyTypes);
Logger.Log("Instantiating class " + customerClassName);
object instance = ctor.Invoke(null);
customerClass.GetMethod("Run").Invoke(instance, new object[] { args });

在GetConstructor()中,您可以指定不同的构造函数重载,在我的例子中是不带参数的构造函数。

我以前在不同的类中这样做过,因为根据配置的不同,行为会有很大的不同,我想完全将这些情况彼此隔离开来

解析命令行参数后,可以实例化一个类并使用以下命令调用一个方法:

string customerClassName = string.Format("DataProcessor.{0}Processor", ConfigurationManager.AppSettings.Get("Customer"));
Type customerClass = Assembly.GetExecutingAssembly().GetType(customerClassName);
ConstructorInfo ctor = customerClass.GetConstructor(System.Type.EmptyTypes);
Logger.Log("Instantiating class " + customerClassName);
object instance = ctor.Invoke(null);
customerClass.GetMethod("Run").Invoke(instance, new object[] { args });
在GetConstructor()中,可以指定不同的构造函数重载,在我的例子中是不带参数的构造函数