我正在尝试创建一个通用方法,其中类型是通用接口。
private void ShowView<T>(string viewName) where T : IView<Screen>
{
IRegion mainRegion = _regionManager.Regions[RegionNames.MainRegion];
T view = (T)mainRegion.GetView(viewName);
if (view == null)
{
view = _container.Resolve<T>();
mainRegion.Add(view, viewName);
}
mainRegion.Activate(view);
view.LoadData();
view.ViewModel.IsActive = true;
}
接口为 IView<T> where T : Screen
。
所以我有ConcreteView : IView<ConcreteViewModel>
和ConcreteViewModel : Screen
其中Screen是基类。当我尝试执行ShowView<ConcreteView>("concrete");
时,出现了未知方法错误。
这是因为ConcreteView使用ConcreteViewModel而不是Screen作为其IView实现吗?有没有一种重写该方法使其正常工作的方法?
<T, U>
,但一直出错。谢谢...这就是我缺少的东西。 - devGirl