假设我将具有强类型参数的ViewModels以及将不正确类型的参数传递给Navigate方法时使用的NavigationService接受页面类型作为参数。那我想让编译器抛出一个错误。
到目前为止,我已经写了以下内容:
interface IPageViewModel<TParameter>
void Navigate<TViewModel, TParameter>(TParameter argument)
where TViewModel : IPageViewModel<TParameter>;
class PageWithStringParameter : IPageViewModel<string>
为什么这不起作用?
navigationService.Navigate<PageWithStringParameter>("some string");
如果我将PageWithStringParameter作为TViewModel参数传递,则TParameter必须为字符串类型,因为它实现了IPageViewModel。传递TParameter类型参数是多余的。
有什么办法,如何避免这样写:
navigationService.Navigate<PageWithStringParameter, string>("some string");
编译器错误非常令人困惑,特别是如果我也有NavigateMethod的无参数重载
方法Navigate
有两个通用的两个类型参数。您只提供一个。类型参数不能部分指定。您要么全部指定要么全部都不指定(在这种情况下,所有内容都应隐式解决)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句