VB 2008程序集中的扩展方法不能在C#项目中使用
本文关键字:项目 不能 方法 程序 2008 程序集 集中 扩展 VB | 更新日期: 2023-09-27 17:58:16
我在VB程序集中编写了一些字符串扩展方法,并正在C#项目中对它们进行单元测试。然而,C#的行为就像它看不到扩展方法一样,当其他VB项目引用VB程序集时,它们没有问题。VB assembly和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"?
更新:
无法解释为什么它能与其他VB程序集一起使用。认为C#有自己的类访问修饰符或其他东西。