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

时间:2011-04-15 12:48:00

标签: c# javascript .net com interop

我正在用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:我已经尝试了很多其他选项,但提及它们可能都无济于事。

1 个答案:

答案 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”。

相关问题