假设你有这个通用的method:
public static T ConvertValue<T, U>(U value) where U : IConvertible
{
return (T)Convert.ChangeType(value, typeof(T));
}
如果我想在另一个泛型方法中调用此方法。外部泛型方法必须接收实际参数值作为参数,以设置内部泛型方法的<T, U>(U value)
。
如何正确实现这一点,以便我可以调用OuterGeneric
并使用适当的参数提供它?
这只是我需要如何使用它的演示。
public void OuterGeneric<TypeT, TypeU>(TypeT tType, TypeU uType, TypeU valueOfTypeU)
{
// Call of Generic method
TypeT recieverOf_T = ConvertValue<tType, uType>(valueOfTypeU);
}
// Some way to call OuterGeneric. How?
答案 0 :(得分:2)
直接致电ChangeType
。您将调用包装在一个方法中,该方法需要在编译时指定类型,而不是运行时,然后询问在类型仅在运行时知道时如何调用它。您已经有一个方法(src/androidTest
)完全正确。
答案 1 :(得分:0)
您不需要外部方法中泛型类型的方法参数。您应该只能使用类似的类型参数:
public void OuterGeneric<TypeT, TypeU>(TypeU valueOfTypeU)
{
// Call of Generic method
TypeT recieverOf_T = ConvertValue<TypeT, TypeU>(valueOfTypeU);
}
然后按照任何其他通用方法的方式调用OuterGeneric
。
你的问题有点不清楚,因为你动态地使用了术语“#34;”#34;当然,通用参数必须在编译时才知道,因此如果您在运行时只知道类型时正在寻找使用泛型方法的方法,那么您实际上并不想使用.NET泛型。 / p>