2011-09-21 35 views
1

我在突出顯示的行(*)中遇到此代碼的問題;在標題中得到錯誤。任何幫助將不勝感激,因爲我不能得到解決方案。'System.Collections.ArrayList'類型的值無法轉換爲'System.Collections.Generic.List(Of iTextSharp.text.IElement)'

Dim htmlarraylist As New List(Of iTextSharp.text.IElement) 
htmlarraylist = *HTMLWorker.ParseToList(New StreamReader(tempFile), New StyleSheet())* 
document.Open() 

For Each element As iTextSharp.text.IElement In htmlarraylist 
    document.Add(element) 
Next 

document.Close() 
+0

什麼方法HTMLWorker.ParseToList的簽名?如果您使用.NET 4,則可以使用'var'關鍵字並停止關注類型;) –

+0

嘗試將StreamReader更改爲FileReader –

回答

2

對,所以這聽起來像ParseToList返回一個非通用ArrayList。固定的最簡單的方法是 - 假設.NET 3.5 - 可能是使用CastToList

Dim htmlarraylist As List(Of iTextSharp.text.IElement) 
htmlarraylist = HTMLWorker.ParseToList(New StreamReader(tempFile), _ 
             New StyleSheet()) _ 
          .Cast(Of iTextSharp.text.IElement) _ 
          .ToList 

注意我怎麼也改變了第一條語句,使其不再產生的List(Of T)實例僅立即扔掉它走了。

這是假設你真的希望它作爲List(Of T)。如果你不介意它只是是一個ArrayList,你可以改變聲明:

Dim list As ArrayList = HTMLWorker.ParseToList(New StreamReader(tempFile), _ 
               New StyleSheet()) 

你只是遍歷它還有你的代碼,畢竟。 (您同樣可以改變使用IEnumerable聲明。)

+0

請參閱哪裏出錯了。非常感謝 –

1

縮短你的代碼只是

document.Open() 
For Each element As iTextSharp.text.IElement In HTMLWorker.ParseToList(New StreamReader(tempFile), New StyleSheet())  
    document.Add(element) 
Next 
document.Close() 
相關問題