繁体   English   中英

C#:从控制台应用程序中调用方法

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM