如何动态地将类型设置为泛型方法

本文关键字:类型 设置 泛型方法 何动态 动态 | 更新日期: 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泛型。