I have a method that accepts a generic TViewModel class like so:
Page GetPage<TViewModel>() where TViewModel : class, IViewModelBase;
In my class I get the type of the item that the user selected (from a navigation list) like so:
var viewModel = item.TargetType;
This type will always be a view model that inherits from IViewModelBase 
When I call this next line I need to be able to pass in the viewModel type. Im trying to do 
var page = Navigator.GetPage<viewModel>();
But I get the following error:
viewModel is a variable but is being used like a type.
Is there anyway I can pass the viewModel type to the GetPage Method?
If not the only way I can see to do this is to have a switch statement that checks the viewModel type name and hard code the correct TViewModel into the GetPage call.
For example something like this:
switch (viewModel.Name)
{
    case "TaskViewModel":
            page = Navigator.GetPage<TaskViewModel>();
       break;
    case "TaskEditViewModel":
            page = Navigator.GetPage<TaskEditViewModel>();
       break;
}
I tried the solution that this was marked as a duplicate for and that answer does not apply to mine. I get the error
Object does not match target type
The attempted code looks like this:
MethodInfo method = typeof(Navigator).GetMethod("GetPage");
MethodInfo generic = method.MakeGenericMethod(viewModel);
generic.Invoke(this, null);
 
    