[英]C# : Calling a Method out of console application
我有一个控制台应用程序,用于从WS导入内容。
我真的是Console Apps的新手,所以有一个问题。
该项目包含一个名为Importer.cs的类。 此类具有一个称为Initialize()的方法:
class Importer
{
static void Initialize()
{
//here i connect to the server etc.
}
}
现在,我希望能够像这样调用我的APP:
Importer.exe Initialize
因此,它应该调用Initialize方法,然后,我希望能够继续进行例如:
Importer.exe StartImport
我已经使用了args []参数,但是现在我很困。
使用CommandLineParser之类的库,然后使用Reflection将这些方法作为MethodInfo对象调用。
在控制台应用程序中,查看您的解决方案资源管理器(在VS的右窗口中,其中显示了所有文件)。 找到一个名为PROGRAM.CS的文件。 打开它并查找:
static void Main(string[] args)
{
}
在其中放入:
static void Main(string[] args)
{
//This starts a new instance of the Importer Class
Importer myImporter = new Importer();
//This calls the Initialize Method within Importer
Importer.Initialize();
//This calls the StartInput() Method within Importer
Importer.StartInput();
//Use Console.ReadLine() as the last line in this method to keep your screen open after program execution ends.
Console.ReadLine();
}
控制台应用程序的第一件事是在控制台应用程序中的ins Main()中运行。
然后,您只需使用F5测试项目。 测试后,生成项目并通过双击EXE文件运行。
根据您的实际操作,这甚至可能行不通。 我想象一种情况,在该情况下您执行Initialize()
并随后执行StartImport()
,但是在这两次调用之间,程序已完成并且初始化状态消失了。 如果您没有像Initialize()
这样的方法,而是原子的子命令,那么原则上可以采用这种方法。
但是,出现了一个问题:这将是通用的吗? 我的意思是:说,您添加了另一种方法。 然后,您是否想通过自动建立的子命令来访问该方法,还是不介意添加另一个子命令用例? 第一种选择意味着,您需要熟悉反射。
现在,假设您添加了一些方法,无论出于何种原因都无法将其声明为私有,但是您不希望将它们公开为子命令。 因此,您需要跟踪可见性。 当然,这将意味着较差的设计,但是如果您受制于传统组件,则可能会发生这种情况。
现在,假设您需要Initialize()
(或类似的)命令。 当下一个子命令被调用时,它们会处理连接状态或其他任何问题,并且程序仍需要运行,因此它可以使用初始化的信息,句柄等。那么设计控制台应用程序是否有意义呢?像贝壳? 因此,您将从Importer.exe
开始,并要求其提供子命令。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.