我通过COM Interop和WebBrowser WPF控件将JavaScript代码中的一些数据返回给C#代码。我已经成功地在Javascript中返回了如下所示的数据:
var result = new Array();
result[0] = cbCamera.selectedItem;
result[1] = cbMicrophone.selectedItem;现在我有了C#格式的对象结果,如下所示:
result.GetType();
{Name = "__ComObject" FullName = "System.__ComObject"}如何获取这个ComObject中的数组中包含的javascript字符串?
发布于 2009-04-06 02:42:38
要查找包含在rutime可调用包装器(System.__ComObject)中的对象的底层类型,您可以使用refection。然后,您可以根据此信息创建托管类型或将其强制转换为托管类型。
例如:
string type = (string)result.GetType().InvokeMember("getType",
BindingFlags.InvokeMethod, null, result, null);或者,您可以使用invokeMember来检索值。例如,您可以调用valueOf方法将数组尽可能地转换为最有意义的原始值,或者调用toString将数组转换为csv字符串。
string result = (string)result.GetType().InvokeMember("toString",
BindingFlags.InvokeMethod, null, result, null);
string[] jsArray = result.Split(',');
// c# jsArray[n] = js result[n] 编辑:在c# 4.0中,第三种方法是使用新的动态类型。动态类型使得对COM对象进行后期绑定调用变得非常容易。
string csv = ((dynamic)result).toString();https://stackoverflow.com/questions/713146
复制相似问题