我在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];
}
然而,还有更好的方法吗?
答案 0 :(得分:7)
你已经以其他方式宣布了字典。即ViewModelBase
作为键,Type
作为值。
应该是
private IDictionary<Type, ViewModelBase> _routingDictionary;
其中Type
是关键,ViewModelBase
是值。