如何动态地将类型设置为泛型方法
本文关键字:类型 设置 泛型方法 何动态 动态 | 更新日期: 2023-09-27 18:14:50
假设你有这样一个泛型方法:
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?
直接呼叫ChangeType
。将调用包装在一个方法中,该方法要求在编译时(而不是运行时)指定类型,然后询问仅在运行时才知道类型时如何调用它。您已经有了一个方法(ChangeType
),可以做到这一点。
外部方法中不需要泛型类型的方法参数。您应该能够像这样使用类型参数:
public void OuterGeneric<TypeT, TypeU>(TypeU valueOfTypeU)
{
// Call of Generic method
TypeT recieverOf_T = ConvertValue<TypeT, TypeU>(valueOfTypeU);
}
然后像调用其他泛型方法一样调用OuterGeneric
。
你的问题有点不清楚,因为你用了"动态"这个词。当然,在编译时必须知道泛型参数,因此,如果您正在寻找一种方法来使用泛型方法,而只在运行时知道类型,那么您实际上并不想使用。net泛型。