我在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)
但是,有没有更好的方法来做到这一点?
你已经以其他方式宣布了字典.即ViewModelBase作为关键和Type价值.
它应该是
private IDictionary<Type, ViewModelBase> _routingDictionary;
Run Code Online (Sandbox Code Playgroud)
哪个说这Type将是一个关键,ViewModelBase也是一个价值.