Методы расширения в сборке VB 2008 нельзя использовать в проекте C #? - PullRequest
4 голосов
/ 01 июня 2011

Я написал несколько методов расширения строк в сборке VB, и я тестирую их из проекта C #.Однако C # действует так, как будто он не может видеть методы расширения, когда другие проекты VB ссылаются на сборку VB, у них нет проблем.И сборка VB, и тестовый проект C # нацелены на .Net 3.5.

Есть ли способ обойти это?1008 *

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

1 Ответ

3 голосов
/ 01 июня 2011

Пытался сделать модуль 'Публичным'?

Обновление:

Не могу объяснить, почему он работал с другими сборками VB.Подумайте, что у C # есть свое видение модификаторов доступа к классам или чего-то еще.

...