我有什麼可能性寫了下面的情況清晰的代碼:命令行參數和「全局設置」洛杉磯清潔守則
public class App : Application
{
protected override OnStartup(StartupEventArgs e)
{
var arguments = (MyArgumentClass)CommandLineArgumentParser.Parse(e.Args);
// and what now?
}
}
public class ShellViewModel : ViewModelBase
{
// ...
public SubViewModel SubViewModel {get; protected set;}
}
public class SubViewModel : ViewModelBase
{
// is some property which should be set depending on command line arguments
// in the real code it is not just one property in one view model
// but several properties in different view models
public bool MyFlag { get; set;}
}
我的問題是:
- 在哪裏我存儲(哪個類)並將命令行參數應用於需要它們的視圖模型?
- 應用程序設置的相同問題。
我的想法:
Store中的應用程序中的靜態屬性設置,所以我可以很容易地從每App.CommandLineArgumets.Flag視圖模型在需要時訪問值。問題:這會將視圖模型與實際應用程序聯繫起來。在出現此問題的情況下,這正是問題(與Properties.Settings.Default同樣的問題)
將CommandLineArguments對象傳遞給視圖並從視圖設置視圖模型的值。我在這種情況下看到的問題是:我有兩個使用相同視圖模型類的應用程序(可能會更快)。如果我必須更改視圖模型類或任何子類,我需要更新所有消耗它的應用程序中的代碼。但也許它仍然是乾淨的?
對於應用程序設置,我也可以將作爲ApplicationSettingsBase的Propertes.Settings.Default實例傳遞給視圖模型,但感覺不對,視圖模型負責讀取並最終存儲設置。
訪問經由Environment.GetCommandLineArgs命令行參數()需要它們的地方。但是這需要解析代碼中幾個地方的命令行參數。
也許有這樣一個問題的更好/更乾淨的解決方案,或者我忽視了一些東西。我正在尋找這種問題的一般解決方案。