2017-07-06 88 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

相關問題