2014-10-17 101 views
-1

我已經在C#類型轉換和typeof運算

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'轉換爲 'GalaSoft.MvvmLight.ViewModelBase'

我可以通過以下

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

} 

但是istn't有沒有更好的辦法做到這一點解決這個問題?

+0

你想完成什麼? – Maarten 2014-10-17 10:41:21

+0

你想做什麼?你定義了一個ViewModelBase類型的鍵,然後嘗試用類型爲Type的鍵來讀取? – 2014-10-17 10:41:32

回答

7

您已經以其他方式聲明瞭字典。即ViewModelBase作爲鍵和Type作爲值。

應該

private IDictionary<Type, ViewModelBase> _routingDictionary; 

這表示,Type將是一個關鍵和ViewModelBase作爲值。