WebBrowser在ObjectForScripting上声称“对象类型对COM不可见”

时间:2013-12-24 17:51:05

标签: c# javascript wpf

我正在尝试使用WPF WebBrowser控件在C#和JavaScript之间建立互操作。到目前为止,C# - > JavaScript调用工作得很好,但我无法使JavaScript-> C#运行。

我为对象创建了一个类:

[ComVisible(true)]
class BrowserClient
{
    private MainWindow owner;

    public string id = "browser-client";

    public BrowserClient(MainWindow owner)
    {
        this.owner = owner;
    }

    public void sendMessage(string date)
    {
        owner.OnReceiveMessage(date);
    }
}

请注意ComVisible属性。

但是当我在Window_Loaded事件中设置ObjectForScripting属性时:

webBrowser.ObjectForScripting = new BrowserClient(this);

我得到以下(非常混乱)异常:

  

发生了'System.ArgumentException'类型的未处理异常   PresentationFramework.dll

     

其他信息:COM无法看到对象类型。您   需要将ComVisibleAttribute属性设置为True。

毋庸置疑,我非常困惑。这里发生了什么?

更新:值得一提的是,我在Windows 8.1上使用.NET 4.0和Visual Studio 2013 Express for Desktop。

1 个答案:

答案 0 :(得分:9)

我想,我知道你的问题 - 你需要让你的班级public