类型转换和typeof

use*_*774 -1 c# types casting

我在C#中有以下声明

private IDictionary<ViewModelBase, Type> _routingDictionary;
Run Code Online (Sandbox Code Playgroud)

用以下方法

public void Navigate<TDestinationViewModel>() where TDestinationViewModel : ViewModelBase
{
    //I want to use something like
    var des = _routingDictionary[typeof(TDestinationViewModel)]
}
Run Code Online (Sandbox Code Playgroud)

但这不起作用,我收到编译错误

无法从'System.Type'转换为'GalaSoft.MvvmLight.ViewModelBase'

我可以使用以下方法解决此问题

public void Navigate<TDestinationViewModel>() where TDestinationViewModel : ViewModelBase, new()    
{
    TDestinationViewModel des = new TDestinationViewModel();
    Type destination = _routingDictionary[des];            

}
Run Code Online (Sandbox Code Playgroud)

但是,有没有更好的方法来做到这一点?

Sri*_*vel 7

你已经以其他方式宣布了字典.即ViewModelBase作为关键和Type价值.

它应该是

private IDictionary<Type, ViewModelBase> _routingDictionary;
Run Code Online (Sandbox Code Playgroud)

哪个说这Type将是一个关键,ViewModelBase也是一个价值.