Подтвердить что ты не робот

Методы расширения в ссылочных сборках?

Если я попытаюсь вызвать мой метод расширения, который определяется следующим образом:

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

Ответ 1

Ваше пространство имен "myapp" не может напрямую содержать функцию "ToTest", там определен модуль. Попробуйте

Imports myapp.LinqExtensions

и убедитесь, что это общедоступный модуль