私は、いくつかの拡張メソッドを含む従来の 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 プロジェクトに依存する複数のプロジェクトがあり、理想的には拡張機能をそれらすべてで使用できるようにする必要があります。
私はかなりのグーグル検索を行いましたが、C# で VB 拡張メソッドを実際に使用することについて何も見つけることができませんでした。問題は、それらがモジュールに含まれている必要があることだと思いますが、確認できていません。
拡張メソッドが必要な場所 (特に C# の単体テスト プロジェクト) で複製するのは避けたいと思います。