[英]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.