Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/319.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 是否可以将类型更改为给定类型?_C#_.net_Generics - Fatal编程技术网

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

C# 是否可以将类型更改为给定类型?,c#,.net,generics,C#,.net,Generics,当我有一个装箱值时,例如: object input = 31.33M; 我可以使用以下方法将其转换为可转换类型: public static T ToType<T>( object value) { return (T) Convert.ChangeType(value,typeof (T)); } (让我们撇开精度问题不谈) 好的 但现在我面临一种情况(我使用WebAPI公开方法描述符及其参数类型),我有一个给定的类型 所以现在我有: Type SomeoneSays

当我有一个装箱值时,例如:

object input = 31.33M;
我可以使用以下方法将其转换为可转换类型:

public static T ToType<T>( object value)
 {
  return (T) Convert.ChangeType(value,typeof (T));
 }
(让我们撇开精度问题不谈)

好的

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

所以现在我有:

Type SomeoneSaysMyTypeIs=typeof(decimal)
但现在我不能使用泛型类型参数

问题

如何增强我的工作方法:(伪代码)


我已经找到了解决方案,但如果有很多
if的

可能是我没有正确理解你的问题(如果我理解了,请告诉我),那么引入另一种方法怎么样:

public static object ToType(object value, Type t)
{
    return Convert.ChangeType(value, t);
}
正如您所看到的,这与直接调用相同:

Convert.ChangeType(value, t);

另外,您显然必须返回一个
对象,因为所需的泛型类型
T
未知-您只有一个
type
@Rhumborl类型的变量:除了不可能之外,这样做没有任何意义:)。不。我需要它作为一个十进制返回类型,而不是对象@RoyiNamir因此我的评论-如果您想将其用作十进制,您需要在调用代码中使用一个泛型方法或将返回值强制转换为十进制(或者通过反射调用webapi方法,这听起来并不正确),如果服务期望这样,那么为什么需要所有转换呢?
ToType(SomeoneSaysMyTypeIs,input); //return type :decimal  , not object
public static object ToType(object value, Type t)
{
    return Convert.ChangeType(value, t);
}
Convert.ChangeType(value, t);