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