c# – 具有通用接口的通用方法
发布时间:2020-12-16 01:47:48  所属栏目:百科  来源:网络整理 
            导读:我正在尝试创建一个泛型方法,其中类型是通用接口. private void ShowViewT(string viewName) where T : IViewScreen{ IRegion mainRegion = _regionManager.Regions[RegionNames.MainRegion]; T view = (T)mainRegion.GetView(viewName); if (view == null)
                
                
                
            | 
                         
 我正在尝试创建一个泛型方法,其中类型是通用接口. 
  
  
  
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>.其中T:屏幕. 所以我有ConcreteView:IView< ConcreteViewModel>和ConcreteViewModel:Screen是基类的屏幕.当我尝试做ShowView< ConcreteView>(“具体”);我收到一个UnknownMethod错误. 是因为ConcreteView使用ConcreteViewModel代替Screen来实现它的IView吗?有没有办法重写方法,以便它的工作原理? 解决方法
 IVIEW< ConcreteViewModel>不是IView< Screen>不提供接口的差异 
  
  
  
        interface IView<out T>
{
} 
 (以上可以从C#4.0开始) 否则,您应该能够编写如下所示的方法签名 void ShowView<T,U>(string viewName) where T : IView<U> where U : Screen
{
     // code
} 
 并像ShowView< ConcreteView,ConcreteViewModel>(“blah”)一样调用它; (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!  | 
                  
