我正在使用一个System.Window.Controls Webbrowser(WPF),它会在这里和那里抛出一些异常。
通常,如果我想访问Winforms中的webbrowser文档并单击我将使用的元素
HtmlDocument document = webNav.webBrowser1.Document;
document.GetElementById("id_of_element").InvokeMember("Click");
但是,在WPF中,它会抛出错误Cannot implicitly convert type 'object' to 'System.Windows.Forms.HtmlDocument'. An explicit conversion exists (are you missing a cast?)
。
我可以通过
解决这个问题 dynamic document = webNav.webBrowser1.Document;
document.GetElementById("id_of_element").InvokeMember("Click");
是否有更好/首选的方法,或者这是动态类型的可接受用途? (有没有可接受的动态类型使用的例子?)
答案 0 :(得分:4)
就像错误所说的那样,你错过了一个明确的演员:
HtmlDocument document = (HtmlDocument)webNav.webBrowser1.Document;
假设您在文件顶部有using System.Windows.Forms;
(以使上面的代码更短)。
我知道这是因为这条线,
存在显式转换(您是否错过了演员?)
在这种情况下,不需要使用dynamic
。