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

3

我正在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:我尝试了很多其他选项,但在这一点上提到它们可能没有帮助。
1个回答

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"。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接