簡體   English   中英

如何在viewmodel(MVVM Model)wpf應用程序中使用命令行參數

[英]how to use Command line parameter in viewmodel (MVVM Model) wpf application

我有一個WPF應用程序,可以采取命令行參數。 我想在ViewModel中使用此命令行參數,我有以下選項來執行此操作。

1)在app.xaml.cs中創建公共靜態變量。 讀取main方法中的命令行參數值並將其分配給公共靜態變量。 可以使用App.variablename在viewmodel中訪問。

2)創建環境變量,如System.Environment.SetEnvironmentVariable(“CmdLineParam”,“u”),然后在帶有Environment.GetEnvironmentVariable(“CmdLineParam”)的viewmodel中使用它。

我想問一下考慮MVVM模式哪種方法很好,以及是否有更好的方法來實現這一點。

我認為這個問題與MVVM根本沒有關系。 使命令行參數可用於視圖模型的好方法可能是(構造函數)注入服務。 我們稱之為IEnvironmentService

public interface IEnvironmentService
{
  IEnumerable<string> GetCommandLineArguments();
}

然后,實現將使用Environment.GetCommandLineArgs (它返回包含當前進程的命令行參數的字符串數組):

public class MyProductionEnvironmentService : IEnvironmentService
{
  public IEnumerable<string> GetCommandLineArguments()
  {
    return Environment.GetCommandLineArgs();
  }
}

您的視圖模型將如下所示:

public class MyViewModel
{
  public MyViewModel(IEnvironmentService service)
  {
    // do something useful here
  }
}

您現在要做的就是在運行時創建並插入生產環境服務(自己傳遞,由IoC容器等創建)。 並使用假/模擬單元進行單元測試。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM