C# 如何将命名参数列表传递给打开的windows窗体应用程序

C# 如何将命名参数列表传递给打开的windows窗体应用程序,c#,parameter-passing,C#,Parameter Passing,我有一个windows窗体应用程序 我们叫它B 现在我有另一个申请。让我们称之为 A将启动B作为一个新流程 现在我想将命名参数列表传递给B,并在B中使用它们 我该怎么做 我的意思是示例参数列表 {job:"computer engineer",age:"32",experience:"3 years"} 此外,这些参数列表应该是可选的。有时我可能传递5个参数,有时传递0个 在启动B应用程序时,我将如何读取这些参数 那么这样做的方式是什么呢?多谢各位 c#假设您正在用process调用您的“B”

我有一个windows窗体应用程序 我们叫它B 现在我有另一个申请。让我们称之为

A将启动B作为一个新流程 现在我想将命名参数列表传递给B,并在B中使用它们 我该怎么做

我的意思是示例参数列表

{job:"computer engineer",age:"32",experience:"3 years"}
此外,这些参数列表应该是可选的。有时我可能传递5个参数,有时传递0个

在启动B应用程序时,我将如何读取这些参数

那么这样做的方式是什么呢?多谢各位


c#

假设您正在用process调用您的“B”进程。开始时,以下操作应该有效:

System.Diagnostics.Process.Start(string fileName, string arguments)
您的“B”进程主线程应该接受一个数组来容纳可能的参数,然后您可以对这些参数进行迭代

static void Main(string[] args)
{
    //your code to decipher arguments here
}

我有两种方法可以考虑这样做

首先是使用命令行参数。如果您(从命令行)以以下方式调用process:

然后,通过在流程的开始选项中设置
参数
,在代码中复制该参数。然后,您必须设置流程来查找所有这些标志,记住它们都可以是可选的,等等

第二个选项(更灵活一点)是创建一个文件,其中保存您要传递的值,并从启动的进程中读取它。您可以创建此XML或直接值

编辑:以下是第一个选项的示例

Process p = new Process();
ProcessStartInfo startInfo = new ProcessStartInfo();
startInfo.FileName = "your exe path";
startInfo.Arguments = "your argument list";
p.StartInfo = startInfo;
p.Start();

我不想告诉您如何格式化参数字符串;那应该由你来决定。但是,我建议使用它,这可能会使接收端的解析更加容易。

是的,我将使用process start。但我如何才能将它们理解为命名参数呢?我不确定这里的最佳实践,但也许这个建议可以激发更好的响应,或者让您开始走上正确的道路。如果将参数作为字符串传递(例如“job:CE”“age:32”“exp:3 year”),则可以运行一个switch语句,对字符串的前三个字符进行求值,以将其指向正确的方向。显然,这并不是最优雅的解决方案(它迫使您在与实际参数相同的字符串中硬编码3个字母的代码)但它有可能实现您的目标。您的switch语句需要进入一个循环的内部,该循环在数组上迭代以解析每个参数。我将使用这个循环开始:System.Diagnostics.Process.start。你能在你的帖子里举个例子吗you@MonsterMMORPG有关解析参数的帮助,请参见我的编辑和库链接。
Process p = new Process();
ProcessStartInfo startInfo = new ProcessStartInfo();
startInfo.FileName = "your exe path";
startInfo.Arguments = "your argument list";
p.StartInfo = startInfo;
p.Start();