我試圖重構下面的代碼到一個單一的方法傳遞參數給泛型方法在運行時
if (message.Type == WindowType.DataSourcePickerTest)
{
var vm = SimpleIoc.Default.GetInstance<DataSourcePickerViewModel>();
var win = new PickerWindowTest { DataContext = vm };
var result = win.ShowDialog() ?? false;
if (result)
Messenger.Default.Send(vm);
}
else if (message.Type == WindowType.BaselineSave)
{
var vm = SimpleIoc.Default.GetInstance<BaselineSaveAsViewModel>();
var win = new BaselineSaveAs { DataContext = vm };
var result = win.ShowDialog() ?? false;
if (result)
Messenger.Default.Send(vm);
}
兩個分支之間的唯一區別是視圖模型的類型和窗口(VM和WIN) 。到目前爲止,我有
private void LaunchWindow(Type viewModelType, Type windowType)
{
var vm = SimpleIoc.Default.GetInstance<viewModelType>();
}
但我得到一個編譯錯誤「的類型或名稱空間名'viewModelType'無法找到'。有沒有一種方法來重構這個if語句而不訴諸反思?在此先感謝
在你的LaunchWindow中,不是一個類型,而是一個參數。這是錯誤信息告訴你的。 –
Keugyeol