Ошибка методов расширения VB.NET - PullRequest
1 голос
/ 07 марта 2011
''' <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)()

ошибка времени компиляции (в последней строке)

Метод расширения 'Public Function ToList () As System.Collections.Generic.List(Из T) 'определено в' ... Utils 'не является универсальным (или не имеет параметров свободного типа) и поэтому не может иметь аргументы типа.

Был ли это das?

Ответы [ 2 ]

1 голос
/ 07 марта 2011

Попробуйте это:

<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 здесь делает это так, чтобы возвращаемый тип был списком расширяемого типа.

0 голосов
/ 07 марта 2011

Попробуйте это.

<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
...