是否可以将 Type 更改为给定类型?
Is it possible to change Type to a given type?
当我有一个盒装值时,例如:
object input = 31.33M;
我可以用这个方法把它转换成可转换类型:
public static T ToType<T>( object value)
{
return (T) Convert.ChangeType(value,typeof (T));
}
所以两者都是:
Console.WriteLine (ToType<double>(input));
Console.WriteLine (ToType<decimal>(input));
将return
31.33 //as double
31.33 //as decimal
(让我们撇开精度问题)
好的。
但现在我面临 (我正在使用公开方法描述符及其参数类型的 WebAPI) 我有 given类型。
所以现在我有:
Type SomeoneSaysMyTypeIs=typeof(decimal)
但是现在我不能使用通用类型参数。
问题
如何增强我的方法以用于:(伪代码)
ToType(SomeoneSaysMyTypeIs,input); //return type :decimal , not object
我找到了解决方案,但有很多 if's
...
可能是我没有正确理解你的问题(如果我理解了请告诉我),但是引入另一种方法呢:
public static object ToType(object value, Type t)
{
return Convert.ChangeType(value, t);
}
如您所见,与直接调用 Convert.ChangeType
相同:
Convert.ChangeType(value, t);
当我有一个盒装值时,例如:
object input = 31.33M;
我可以用这个方法把它转换成可转换类型:
public static T ToType<T>( object value)
{
return (T) Convert.ChangeType(value,typeof (T));
}
所以两者都是:
Console.WriteLine (ToType<double>(input));
Console.WriteLine (ToType<decimal>(input));
将return
31.33 //as double
31.33 //as decimal
(让我们撇开精度问题)
好的。
但现在我面临 (我正在使用公开方法描述符及其参数类型的 WebAPI) 我有 given类型。
所以现在我有:
Type SomeoneSaysMyTypeIs=typeof(decimal)
但是现在我不能使用通用类型参数。
问题
如何增强我的方法以用于:(伪代码)
ToType(SomeoneSaysMyTypeIs,input); //return type :decimal , not object
我找到了解决方案,但有很多 if's
...
可能是我没有正确理解你的问题(如果我理解了请告诉我),但是引入另一种方法呢:
public static object ToType(object value, Type t)
{
return Convert.ChangeType(value, t);
}
如您所见,与直接调用 Convert.ChangeType
相同:
Convert.ChangeType(value, t);