如何将Object类型的对象强制转换为类型为T的对象?

时间:2015-10-21 21:37:06

标签: c# generics

我编写了一个执行JavaScript并返回值的方法。返回的值可能是任何东西。现在我想通过写一个通用的重载来减少重复代码的数量。

类似的东西:

public T ExecuteJavascriptWithReturnValue<T>(string js)
{
 object obj = ExecuteJavascriptWithReturnValue(js); --the original method returns an object
 if (typeof(T) == typeof(int) || typeof(T) == typeof(double) ||typeof(T) == typeof(string))
      return (T)(obj);
}
else
{
   throw new Exception("For objects other than int, float, double, or string, please use the non generic version.");
}

我收到以下错误:specified cast is not valid。此代码唯一有效的时间是返回的对象类型为string

感谢您的帮助。

修改

public object ExecuteJavascriptWithReturnValue(string js)
{
   IJavaScriptExecutor jse = driver as IJavaScriptExecutor;
   object result = jse.ExecuteScript(js);
   return result;
}

此方法可以返回任何内容,例如集合,字符串,数字等。这是元数据:

...object ExecuteScript(string script, params object[] args);

并且脚本可能类似于:

string js = "return $('#calculateValueStep > span.k-widget.k-numerictextbox > span >"
          + " input.k-formatted-value.k-input').val();";

我经常使用这种方法。所以,我想要一个通用的方法,我期待一个类型的对象,如int,double和son。

1 个答案:

答案 0 :(得分:2)

也许试试这个:

 return (T)Convert.ChangeType(obj, typeof(T));