是否可以将类型更改为给定类型

本文关键字:类型 是否 | 更新日期: 2023-09-27 18:36:11

当我有一个带框的值时,例如:

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));

会回来

31.33 //as double
31.33 //as decimal

(让我们撇开精度问题不谈)

好。

但是现在我面临着(我正在使用公开方法描述符及其参数类型的 WebAPI)我有一个给定类型的情况。

所以现在我有:

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);