我在VB程序集中編寫了一些字符串擴展方法,並從C#項目中對它們進行了單元測試。然而,當其他VB項目引用VB程序集時,C#的行爲就像看不到擴展方法,他們沒有問題。 VB公司和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 2011-06-01 19:10:25
可能要檢查,如果你可以顯式調用(StringExtensions.Remove(someString,subStringsToRemove);),看看它是否可以找到類... – 2011-06-01 19:12:38
@Kamarey,工作!隨時讓您的評論一個答案,我會接受它。對我來說愚蠢的錯誤。 – Matt 2011-06-01 19:18:35