繁体   English   中英

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

[英]How to set a type dynamically into a generic 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?

只需直接调用ChangeType 您将调用包装在一个方法中,该方法要求在编译时而不是在运行时指定类型,然后在仅在运行时知道类型时询问如何调用它。 您已经有一个方法( ChangeType )可以做到这一点。

在外部方法中,不需要泛型类型的方法参数。 您应该能够像这样使用类型参数:

public void OuterGeneric<TypeT, TypeU>(TypeU valueOfTypeU)
{
   // Call of Generic method
   TypeT recieverOf_T  = ConvertValue<TypeT, TypeU>(valueOfTypeU);
}

然后OuterGeneric与其他任何通用方法OuterGeneric的方式调用OuterGeneric

您的问题尚不清楚,因为您使用了“动态”一词。 当然,泛型参数必须在编译时就已知道,因此,如果您在寻找一种仅在运行时知道泛型类型时使用泛型方法的方法,那么您实际上就不想使用.NET泛型。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM