如何使用VB.Net扩展方法在c#项目

本文关键字:项目 方法 扩展 何使用 VB Net | 更新日期: 2023-09-27 18:12:47

我有一个遗留的VB。. Net类库,包含一些扩展方法,其中一个方法大致如下:

Namespace Extensions
    Public Module OrmExtensions
        <Extension()>
        Public Function ToDomainObjectCollection(ByRef objects As OrmCollection(Of OrmObject)) As DomainObjectCollection
            Return objects.AsQueryable().ToDomainObjectCollection()
        End Function
        <Extension()>
        Public Function ToDomainObjectCollection(ByRef objects As IQueryable(Of OrmObject)) As DomainObjectCollection
            Dim doc As New DomainObjectCollection()
            For Each o In objects
                doc.Add(o.ToDomainObject())
            Next
            Return doc
        End Function
    End Module
End Namespace

要在VB中使用这些扩展,我只需要导入extensions . ormextensions。我有另一个项目,这是在c#依赖于VB的扩展,我不能让他们工作。OrmExtensions是不可用的,只是使用命名空间VBProject。Extensions不使扩展可用。

有多个项目依赖于VB项目,理想情况下,扩展应该对所有项目都可用。

我已经做了相当多的谷歌搜索,但还没有能够找到任何关于实际使用VB扩展方法在c#。我认为问题是他们需要在一个模块中,但我还没有能够确认。

我不想在需要的地方复制扩展方法(特别是在我们的单元测试项目中,这是c#)。

如何使用VB.Net扩展方法在c#项目

您不应该使用ByRef

VB。Net(显然)支持ref参数的扩展方法;c#(正确地)没有。

ByRef (c#中的ref)参数允许方法为调用者传递的变量或字段分配一个新实例。