我正在尝试使用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);
}
}
Run Code Online (Sandbox Code Playgroud)
注意该ComVisible属性.
但是当我在Window_Loaded事件中设置ObjectForScripting属性时:
webBrowser.ObjectForScripting = new BrowserClient(this);
Run Code Online (Sandbox Code Playgroud)
我得到以下(非常混乱)异常:
PresentationFramework.dll中出现未处理的"System.ArgumentException"类型异常
附加信息:COM不可见对象类型.您需要将ComVisibleAttribute属性设置为True.
不用说,我很困惑.这里发生了什么?
更新:值得一提的是,我在Windows 8.1上使用.NET 4.0和Visual Studio 2013 Express for Desktop.