从C#到JavaScript的Marshaling双数组

时间:2013-07-18 11:14:24

标签: c# javascript html5 com marshalling

在我的WPF应用程序中,我有一个WebBrowser控件,它托管一些HTML5 / javaScript内容。 使用webBrowser.ObjectForScripting我正在通过该脚本的参数传递特殊对象 一切都很好,直到我试图传递一个简单的二维值数组。我已经尝试了很多方法,从具有该数组的简单公共字段开始,完成复杂的方法,如

[PermissionSet(SecurityAction.Demand, Name = "FullTrust")]
[ComVisible(true)]
[Guid("1F436D05-1111-3340-8050-E70166C7FC86")]
public class ScriptObject
{
    [ComVisible(true)]
    public double[] d = { 1,2,3 };

    [ComVisible(true)]
    public object Data { get { return d; } set { d = value; } }

    [ComVisible(true)]
    [return: MarshalAs(UnmanagedType.SafeArray, SafeArraySubType = VarEnum.VT_ARRAY)]
    public object GetArr()
    {
        return d;
    }
}

但似乎没有任何效果。我经常从webBrowser控件中的javaScript代码中获取异常,例如“expexted string”或类似的东西,当试图访问数组时 window.external.GetArr()window.external.Data

如果我没有误解文档(http://msdn.microsoft.com/ru-ru/library/cc645074(v=vs.95).aspx),应该有一个正确的方法来做到这一点,但是如何?

感谢您的帮助!

0 个答案:

没有答案