如何使用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#)。
您不应该使用ByRef
。
VB。Net(显然)支持ref
参数的扩展方法;c#(正确地)没有。
ByRef
(c#中的ref
)参数允许方法为调用者传递的变量或字段分配一个新实例。