Generics 泛型动态类型

Generics 泛型动态类型,generics,Generics,我在一个实用程序类中有以下方法签名 public void Navigate<TDestinationViewModel>(){//Implementation omitted} 在这个方法中,我想通过如下操作调用utility类中的方法 UtilityClass.Navigate<typeof(navigateParam)>(); UtilityClass.Navigate(); 本质上,我不知道传递给方法的参数的类型。如何才能做到这一点?您的类似乎是抽象的,而您

我在一个实用程序类中有以下方法签名

public void Navigate<TDestinationViewModel>(){//Implementation omitted}
在这个方法中,我想通过如下操作调用utility类中的方法

UtilityClass.Navigate<typeof(navigateParam)>();
UtilityClass.Navigate();

本质上,我不知道传递给方法的参数的类型。如何才能做到这一点?

您的类似乎是抽象的,而您的方法定义了一个无用的泛型,因为只有类和方法参数可以有泛型。 也不可能将值作为泛型传递给方法

正确答案应该是:

public void Navigate(TDestinationViewModel param){//Implementation omitted}

And then UtilityClass.Navigate(navigateParam);
或者如果你想使用泛型,那么

public class Navigator<T extends TDestinationViewModel> {
  public void Navigate(T param){//Implementation omitted}
}
UtilityClass.Navigate(navigateParam);
公共类导航器{
公共void导航(T参数){//实现省略}
}
实用类.导航(navigateParam);
希望有帮助

注意!静态方法不能有实例!所以类的泛型不能应用于静态方法,因为它是无实例的!要使用泛型,需要定义泛型的类的对象实例。但在您的问题中,无论如何都不需要泛型,基类TDestationViewModel应该足够了

public class Navigator<T extends TDestinationViewModel> {
  public void Navigate(T param){//Implementation omitted}
}
UtilityClass.Navigate(navigateParam);