类型转换和typeof

时间:2014-10-17 10:39:25

标签: c# types casting

我在C#中有以下声明

private IDictionary<ViewModelBase, Type> _routingDictionary;

使用以下方法

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

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

  

无法转换为System.Type&#39;至   &#39; GalaSoft.MvvmLight.ViewModelBase&#39;

我可以使用以下

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

}

然而,还有更好的方法吗?

1 个答案:

答案 0 :(得分:7)

你已经以其他方式宣布了字典。即ViewModelBase作为键,Type作为值。

应该是

private IDictionary<Type, ViewModelBase> _routingDictionary;

其中Type是关键,ViewModelBase是值。