我正在尝试使用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。
答案 0 :(得分:9)
我想,我知道你的问题 - 你需要让你的班级public