我编写了一个执行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。
答案 0 :(得分:2)
也许试试这个:
return (T)Convert.ChangeType(obj, typeof(T));