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”)一样调用它; (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |