如果我尝试调用我的扩展方法,它的定义如下:
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 source As IEnumerable(Of TSource)”有什么问题吗?
*********************************** 编辑 ********************************
好的,为了澄清发生了什么,我想提供一些额外的信息。 我可以追踪到问题如下:
场景:
Assembly1 (根命名空间 "myapp"):
...
<System.Runtime.CompilerServices.Extension()> _
Public Function ToTest(ByVal source As String) As String
Return ""
End Function
...
'调用有效:
'...
Dim a as string
a.ToTest()
...
汇编语言2: (包含对汇编语言1的引用)
“调用不起作用:
”imports myapp
...
Dim a as string
a.ToTest()