首页 > 解决方案 > 从外部访问来自 ac# 控制台应用程序的对象

问题描述

我是一名新的初级开发人员,正在从事我的第一个个人项目。为此,我正在创建用于自动创建 Word 文档的 ac# 控制台应用程序。该计划是将应用程序集成到不同的项目和不同的环境中,这就是为什么它应该是一个独立的解决方案。但为了给它更多的灵活性和多功能性,我希望应用程序提供一些输出。

由于环境不同,该应用程序也应该可以与 python 脚本一起使用。这样做的最佳做法是什么???特别是如果您想根据用例提供不同的输出???

一个小例子:我得到一个包含所有信息的 json 对象来创建一个 word 文档。在独立解决方案中,我不需要输出(它只创建一个单词 doc 和 pfd)。但是,如果我想在 wpf UI 项目中使用该应用程序,如果我想要预览和实时更新功能,那么能够访问创建的对象会很好。为了实现这一点,我将使用返回值(退出代码)并(取决于代码)再次创建所需的对象,还是将其作为嵌入并调用所有正常功能,或者我什至可以这样做类似于输出值复杂返回值(如字符串 [])来返回序列化对象?

一个。)

static int Main(string[] args)
{
   //do something
   return *code for decision making*
}

b.) 创建库

C。)

static void Main(string[] args, out string[] output)
{
   //do something
   output = *serialized object(s)*
}

或者

static string[] Main(string[] args)
{
   //do something
   return *serialized object(s)*
}

标签: c#outputconsole-application

解决方案


根据这篇MSDN 文章,Main()C# 中的方法只能有这些签名:

public static void Main();
public static int Main();
public static void Main(string[] args);
public static int Main(string[] args);
public static async Task Main();
public static async Task<int> Main();
public static async Task Main(string[] args);
public static async Task<int> Main(string[] args);

这表明不可能从Main()C# 中的方法返回有关对象的数据。

但是,您可以通过将有关该对象的数据以 JSON 之类的格式打印到控制台输出流来返回有关该对象的数据以供另一个环境/程序处理。从您的其他环境(例如:Python)中,您可以将 C# 程序的控制台输出流作为字符串读取,然后对其进行解析。


推荐阅读