“System.Collections.ArrayList”类型的值无法转换为“System.Collections.Generic.List(Of iTextSharp.text.IElement)”

时间:2011-09-21 12:09:45

标签: asp.net vb.net

我在突出显示的行(*)中遇到此代码的问题;得到标题中的错误。任何帮助都会受到赞赏,因为我无法得到解决方案。

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()

2 个答案:

答案 0 :(得分: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。)

答案 1 :(得分:1)

将代码缩短为

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