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