问题描述
||
我正在C#(.NET 4.0)中实现ActiveX组件,并且无法访问JScript数组;在这种情况下,是一个关联数组。在HTML页面中,我这样调用我的组件:
MyComponent.MyMethod({ \"foo\": \"bar\" });
我的ActiveX组件具有以下方法签名:
public void MyMethod(dynamic someArray)
{
// someArray will be a RCW (__ComObject)
}
我认为我可以通过Idispatch调用此对象上的所有常用内容。但是,JavaScript数组上没有可用的属性和方法。
我已经使用了此博客文章的某些部分来尝试检查我实际上得到的COM对象类型,但是那里显示的DumpTypeInfo
方法只是给了我JScriptTypeInfo,它上面没有定义函数。
大量文章讨论了如何从.NET到JavaScript获取数组,但是相反的方法似乎也不是那么简单。有任何想法吗?
PS:我已经尝试了很多其他选择,但是现在都提到它们可能对您没有帮助。
解决方法
我想知道您是否解决了这个问题。我已经尝试使用WebBrowser控件和分配给以下类的实例的ObjectForScripting属性尝试一些操作
[ComVisible(true)]
public class ObjectForScripting {
public void Call(dynamic o) {
Type t = o.GetType();
var result = t.InvokeMember(\"a\",System.Reflection.BindingFlags.GetProperty,null,o,null);
}
}
文档执行window.external.Call({a:\'b\'})
,一切似乎都正常,result
获得值\“ b \”。