J'ai écrit quelques méthodes d'extension de chaîne dans un assemblage VB et je les ai testées à partir d'un projet C#. Cependant, C# agit comme s'il ne pouvait pas voir les méthodes d'extension, quand d'autres projets VB référencent l'assemblage VB ils n'ont aucun problème. Le VB assem- blablement et le projet de test C# ciblent .Net 3.5.Les méthodes d'extension de l'assembly VB 2008 ne peuvent pas être utilisées dans un projet C#?
Y a-t-il un moyen de contourner cela?
VB.Net méthodes d'extension:
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
utilisation VB.Net:
Imports SomeNamespace.ExtensionMethods
...
someString = someString.Remove(subStringsToRemove)
C# utilisation (ne fonctionne pas):
using SomeNamespace.ExtensionMethods; //No error, but ExtensionMethods is not in the intellisense
...
someString = someString.Remove(subStringsToRemove); //error, can't find matching overlaod
Vous avez essayé de rendre le module 'Public'? – Kamarey
Peut vouloir vérifier si vous pouvez invoquer explicitement (StringExtensions.Remove (someString, subStringsToRemove);) pour voir si elle peut même trouver la classe ... –
@Kamarey, cela a fonctionné! N'hésitez pas à faire votre commentaire une réponse et je l'accepterai. Erreur stupide de ma part. – Matt