VBアセンブリでいくつかの文字列拡張メソッドを記述し、C#プロジェクトからそれらをテストしています。しかし、他のVBプロジェクトがVBアセンブリを参照しても問題ない場合、C#は拡張メソッドを見ることができないように動作します。 VB assemeblyとC#の両方のテストプロジェクトは.Net 3.5をターゲットにしています。VB 2008アセンブリの拡張メソッドはC#プロジェクトで使用できません。
方法はありますか?
VB.Net拡張方法:
Imports System.Runtime.CompilerServices
Imports System.Text.RegularExpressions
Imports System.Linq
Namespace ExtensionMethods
Module StringExtensions
<Extension()> _
Public Function Remove(_
ByVal input As String, _
ByVal subStrings As String()) As String
...
End Function
<Extension()> _
Public Function Substrings(_
ByVal input As String, _
ByVal regexPattern As String, _
ByVal regexOptions As RegexOptions) As IEnumerable(Of String)
...
End Function
<Extension()> _
Public Function Substrings(_
ByVal input As String, _
ByVal regexPattern As String) As IEnumerable(Of String)
...
End Function
End Module
End Namespace
VB.Net使用:
Imports SomeNamespace.ExtensionMethods
...
someString = someString.Remove(subStringsToRemove)
C#の使用(動作しない):
using SomeNamespace.ExtensionMethods; //No error, but ExtensionMethods is not in the intellisense
...
someString = someString.Remove(subStringsToRemove); //error, can't find matching overlaod
モジュールを「パブリック」にしようとしましたか? – Kamarey
明示的に(StringExtensions.Remove(someString、subStringsToRemove);)呼び出すことができるかどうかをチェックして、クラスを見つけることができるかどうかを確認したい場合があります。 –
@Kamarey、それはうまくいきました!あなたのコメントを自由に回答して、私はそれを受け入れるでしょう。私の愚かな間違い。 – Matt