Если я попытаюсь вызвать мой метод расширения, который определяется следующим образом:
Module LinqExtensions
<System.Runtime.CompilerServices.Extension()> _
Public Function ToSortableBindingList(Of TSource)(ByVal source As IEnumerable(Of TSource)) As IBindingList
If (source Is Nothing) Then
Throw New ArgumentNullException("source")
End If
Return New SortableBindingList(Of TSource)(New List(Of TSource)(source))
End Function
End Module
вызывая
Dim sss As String()
sss.AsEnumerable.ToSortableBindingList()
он дает ошибку "ToSortableBindingList не является членом System.Collections.Generic.IEnumerable(Of String)".
Примечание: автозаполнения Intellisense после последнего периода! Если я попытаюсь вызвать context.TestTable.AsEnumerable.ToSortableBindingList(TestTable - это чистый EF4 сгенерированный класс), он даже не появляется с intellisense. Я не понимаю почему. Что не так с объявлением метода расширения "Источник ByVal Как IEnumerable (Of TSource)"?
*********************************** EDIT *********** *********************
Хорошо, чтобы выяснить, что происходит, я хотел бы предоставить дополнительную информацию. Я могу отследить проблему до следующего:
Сценарий:
Assembly1 (корневое пространство имен "myapp" ):
...
<System.Runtime.CompilerServices.Extension()> _
Public Function ToTest(ByVal source As String) As String
Return ""
End Function
...
'Вызывающие работы:
...
Dim a as string
a.ToTest()
...
Assembly2: (Ссылка на сборку 1 включена)
'Вызов не работает:
imports myapp
...
Dim a as string
a.ToTest()