2017-07-06 42 views
-2

IAM到无法转换类型的“HtmlAgilityPack.HtmlDocument”对象为类型“mshtml.IHTMLDocument2”无法投射型“HtmlAgilityPack.HtmlDocument”的目的为类型“mshtml.IHTMLDocument2”

HTMLDocument doc = new HTMLDocument(); 
IHTMLDocument2 doc2 = (IHTMLDocument2)doc;  
+0

看起来像错误很自我描述。你可以不投A型B型,就像你不能用这种方式,我们可以投的system.windowsforms.document 到html的IHTMLDocument2投布尔最新 –

+0

的IHTMLDocument2 DOC =(的IHTMLDocument2)webBrowserDomDocument.Document.DomDocument; 它是可能的,但我是投在HTML AgilityP ack也 – chandu

回答

-1

它是因为HTMLDocument未执行IHTMLDocument2,因此没有已知路径来执行强制转换。

+0

实施没有必要 – chandu

+0

在这种情况下,这是因为没有明确的运算符定义执行转换。如果从object1投射到object2,那么必须在继承,实现或操作符之类的类型之间存在某种关系,以说明转换应如何工作。 –

0

为了铸铅字A键入B,下列之一应该是真实的

  • 类型A应该从B类被继承,或者如果它是一个接口,它应该实现类型B。在这种情况下,隐式转换将起作用
  • 类型B应该从类型A继承,并且您正在转换的变量应该包含B类型的实例。
  • 应该有两种类型的定义explicit operator如果没有是真的执行转换

,那么你会得到一个运行时异常。对于类型HtmlAgilityPack.HtmlDocumentmshtml.IHTMLDocument2,两个条件都不满足。

UPDATE:好像你有一个错字 - 而不是声明doc变量HTMLDocument你已经宣布它为HtmlDocument。 C#是一个区分大小写的语言。

延伸阅读:Casting and Type Conversions (C# Programming Guide)

+0

完全错误的情况。你说 – chandu

+0

完全错误的问题。你问 –

+0

你不知道HtmlAgilityPack.HtmlDocument – chandu

相关问题