使用动态类型

时间:2012-10-14 17:22:55

标签: c# wpf c#-4.0

我正在使用一个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");

是否有更好/首选的方法,或者这是动态类型的可接受用途? (有没有可接受的动态类型使用的例子?)

1 个答案:

答案 0 :(得分:4)

就像错误所说的那样,你错过了一个明确的演员:

 HtmlDocument document = (HtmlDocument)webNav.webBrowser1.Document;

假设您在文件顶部有using System.Windows.Forms;(以使上面的代码更短)。

我知道这是因为这条线,

  

存在显式转换(您是否错过了演员?)

在这种情况下,不需要使用dynamic