【问题标题】:Reading JScript (associative) array from .NET ActiveX component从 .NET ActiveX 组件中读取 JScript(关联)数组
【发布时间】:2011-08-06 07:48:34
【问题描述】:

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

【问题讨论】:

    标签: c# javascript .net com interop


    【解决方案1】:

    我想知道你是否解决了这个问题。我自己尝试过将 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”。

    【讨论】:

      猜你喜欢
      • 2014-06-19
      • 2011-03-27
      • 2011-08-13
      • 1970-01-01
      • 2017-05-14
      • 2011-04-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多