从.NET ActiveX组件中读取JScript关联数组

问题描述

|| 我正在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 \”。