如何<string>从控制台应用程序返回列表?



我正在从Windows窗体应用程序调用控制台应用程序。我想从控制台应用程序中获取一个字符串列表。这是我的简化代码。。。

[STAThread]
static List<string> Main(string[] args)
{      
    List<string> returnValues = new List<string>();
    returnValues.Add("str_1");
    returnValues.Add("str_2");
    returnValues.Add("str_3");
    return returnValues;
}

这样你就不能了。Main只能返回void或int。但您可以将列表发送到标准输出,然后在另一个应用程序中读取。

在控制台应用程序中添加此:

Console.WriteLine(JsonConvert.SerializeObject(returnValues));

以及来电应用程序:

Process yourApp= new Process();
yourApp.StartInfo.FileName = "exe file";
yourApp.StartInfo.Arguments = "params";
yourApp.StartInfo.UseShellExecute = false;
yourApp.StartInfo.RedirectStandardOutput = true;
yourApp.Start();    
string output = yourApp.StandardOutput.ReadToEnd();
List<string> list = JsonConvert.DeserializeObject<List<string>>(output);
yourApp.WaitForExit();

不能只返回一个列表,必须以另一端可以获取列表的方式对其进行序列化。

一种选择是将列表序列化为JSON,并通过Console.Out流发送。然后,在另一端,读取进程的输出流并对其进行反序列化。

否,不能返回字符串或字符串列表。Main方法只能返回voidint

请参阅MSDN

Main方法的返回类型为void或int。

Main方法不是为此而设计的。但如果你想打印你的列表,这里有代码:

    public void showList(List<String> list)
    {
        foreach (string s in list)
        {
            Console.WriteLine(s);
        }
    }

相关内容

  • 没有找到相关文章

最新更新