VB.NET扩展方法错误

时间:2011-03-07 10:18:38

标签: .net vb.net extension-methods

''' <summary> 
''' Transforms an item to a list of single element containing this item.
''' '</summary> 
<Extension()> _
Public Function ToList(Of T)(ByVal item As T) As List(Of T)
  Dim tList As New List(Of T)
  tList.Add(item)
  Return tList
End Function

使用

Dim buttonControl As New System.Windows.Forms.Button
Dim controls = buttonControl.ToList(Of System.Windows.Forms.Control)()

编译时错误(在最后一行)

  

扩展方法'公共功能   ToList()As   System.Collections.Generic.List(Of T)'   在'... Utils'中定义的不是通用的   (或没有自由类型参数)和   所以不能有类型参数。

是吗?

2 个答案:

答案 0 :(得分:1)

试试这个:

<Extension()> _
Public Function ToList(Of TItem, TList As {New, List(Of TItem)})(ByVal item As TItem) As TList
  Dim tList As New TList
  tList.Add(item)
  Return tList
End Function

基本上你的返回类型是泛型(声明为List(of T))。这里的函数decaration执行它,以便返回类型是正在扩展的类型的列表。

答案 1 :(得分:0)

试试这个。

<Extension()>
    Public Function ToList(Of T)(ByVal Item As Object) As List(Of T)
        Dim tlist1 As New List(Of T)
        tlist1.Add(Item)
        Return tlist1
    End Function