.net – 引用程序集中的扩展方法?

前端之家收集整理的这篇文章主要介绍了.net – 引用程序集中的扩展方法?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
如果我尝试调用我的扩展方法,定义如下:
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
@H_301_3@通过电话

Dim sss As String()
   sss.AsEnumerable.ToSortableBindingList()
@H_301_3@它给出错误“ToSortableBindingList不是System.Collections.Generic.IEnumerable(Of String)的成员”.

@H_301_3@注意:Intellisense autocompletes在最后一个时期!如果我尝试调用context.TestTable.AsEnumerable.ToSortableBindingList(TestTable是一个纯EF4生成的类),它甚至不会显示为intellisense.我不明白为什么扩展方法声明“ByVal source As IEnumerable(Of TSource)”有什么问题?

@H_301_3@*************************************编辑************** ******************

@H_301_3@好的,为了澄清发生了什么,我想提供一些额外的信息.
我可以跟踪以下问题:

@H_301_3@场景:

@H_301_3@Assembly1(根命名空间“myapp”):

...
     <System.Runtime.CompilerServices.Extension()> _
        Public Function ToTest(ByVal source As String) As String
            Return ""
        End Function
...
@H_301_3@电话:

...
Dim a as string
a.ToTest()
...
@H_301_3@Assembly2:
(参考装配1)

@H_301_3@‘呼叫不起作用

imports myapp
...
Dim a as string
a.ToTest()
你的命名空间“myapp”不能直接包含函数“ToTest”,那里有一个模块定义.
尝试
Imports myapp.LinqExtensions
@H_301_3@并确保它是一个公共模块

原文链接:https://www.f2er.com/vb/255140.html

猜你在找的VB相关文章