簡體   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