C# WebBrowser索赔”;对象类型对COM不可见;关于ObjectForScripting
我正在尝试使用WPF WebBrowser控件在C#和JavaScript之间建立互操作。到目前为止,C#->JavaScript调用工作得很好,但我无法让JavaScript->C运行 我已经为该对象创建了一个类:C# WebBrowser索赔”;对象类型对COM不可见;关于ObjectForScripting,c#,javascript,wpf,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(Ma
[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事件中设置ObjectForScript属性时:
webBrowser.ObjectForScripting = new BrowserClient(this);
我得到了以下(非常令人困惑的)例外情况:
中发生类型为“System.ArgumentException”的未处理异常
PresentationFramework.dll
其他信息:对象类型对COM不可见。你
需要将ComVisibleAttribute属性设置为True
不用说,我很困惑。这里发生了什么
更新:值得一提的是,我正在Windows 8.1上使用.NET 4.0和Visual Studio 2013 Express for Desktop 我想,我知道你的问题-你需要将你的类
公开
可能你需要在汇编级别上使用ComVisible
?不,试过了。即使这是解决方案,我也不必这样做,因为类型级别的ComVisible
应该覆盖程序集级别。我想,我知道-您需要将类公开
。就是这样!现在我觉得有点傻。你能帮我一个忙并把它作为一个答案贴出来,这样我就可以接受它了吗?新年快乐!我们有时都有点愚蠢——我也没有在第一次传球时看到:o)和“谢谢你”的提议