【发布时间】:2011-06-01 19:09:11
【问题描述】:
我在 VB 程序集中编写了一些字符串扩展方法,并且正在从 C# 项目中对它们进行单元测试。但是,C# 就像看不到扩展方法一样,当其他 VB 项目引用 VB 程序集时,它们没有问题。 VB 程序集和 C# 测试项目都针对 .Net 3.5。
有没有办法解决这个问题?
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
【问题讨论】:
-
试图将模块设为“Public”?
-
可能想检查您是否可以显式调用 (StringExtensions.Remove(someString, subStringsToRemove);) 以查看它是否甚至可以找到该类...
-
@Kamarey,成功了!随时将您的评论作为答案,我会接受。我犯了一个愚蠢的错误。
标签: c# .net vb.net extension-methods