我正在用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阵列上没有可用的属性和方法都可以访问。
我已经使用this Blog article的部分来尝试检查我实际获得的COM对象的类型,但是那里显示的DumpTypeInfo
方法只给了我JScriptTypeInfo,它没有定义的函数它
很多文章都讨论了如何将数组从.NET转换为JavaScript,但另一方面似乎也不是那么简单。有什么想法吗?
PS:我已经尝试了很多其他选项,但提及它们可能都无济于事。答案 0 :(得分:0)
我想知道你是否解决了这个问题。我已经尝试了自己的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”。