IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

[C#] Appeler une classe VB.NET depuis une classe C# ?


Sujet :

C#

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Octobre 2005
    Messages : 46
    Points : 19
    Points
    19
    Par défaut [C#] Appeler une classe VB.NET depuis une classe C# ?
    Salut,

    après avoir cherché dans les forums et sur le net, je n'ai pas trouvé comment appeler une classe VB.NET dans une classe C#. J'ai trouvé comment faire le contraire, mais c'est tout...

    Si quelqu'un pouvait m'aider, je sèche

    Merci...

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Juillet 2005
    Messages : 80
    Points : 83
    Points
    83
    Par défaut
    Peut-être qu'il y a mieux, mais voilà ma solution :

    Dans ta classe en C#, tu déclare ta classe VB
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
     public static Dll_enVB.nomdelaclasse getDLL_nomdelaclasse()
     {
        return new Dll_enVB.nomdelaclasse();
     }
    Et pour l'utiliser :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Dll_enVB.nomdelaclasse MaVar = WindowsApplication7.C_Variables.getDLL_nomdelaclasse();
     
    MaVar.maMethode (x,xx,...);
    Mais attention, je n'ai pas trouvé le moyen de le faire pour les méthodes avec paramètre optionnels (mais c pas forcément utile heureusement)[/quote]

    C_variables est ici le fichier où tu as fais la déclaration de la classe.

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Octobre 2005
    Messages : 46
    Points : 19
    Points
    19
    Par défaut
    Merci du coup de main... mais ça marche pas trop pour moi

    Voilà ma classe :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
     
    Public Class decode
    Private codedText as  String
     
    	Function Decode(ByVal CodedText as string) As String
        Dim Table, PlainText As String
        Dim I, J, K, O, L, pos As Integer
     
        Table = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"
        If Len(CodedText) = 0 Then
          ' Leve une exception.
                Throw New Exception("ERREUR - Pas d'authentification reçue..")
                '      Return "tertois"
        Else
          pos = InStr(1, CodedText, " ") + 1
          CodedText = Mid(CodedText, pos)
     
          For I = 1 To Len(CodedText) Step 4
            K = 0
            For J = 0 To 3
              O = InStr(1, Table, Mid(CodedText, I + J, 1)) - 1
              If (O >= 0) Then
                K = K * 64 + O
              End If
            Next
            For J = 16 To 0 Step -8
              L = convert.ToInt32(2 ^ J)
              PlainText = PlainText + Chr(convert.ToInt32(K / L))
              K = K Mod L
            Next
          Next
          pos = InStr(1, PlainText, ":") - 1
          If pos <> 0 Then
            Return Left(PlainText, pos)
          Else
            Return PlainText
          End If
        End If
      End Function   
    End Class
    elle est compilée dans la dll Decode.dll.
    J'ajoute une référence mais :

    1. Je ne peux pas voir la méthode dans l'explorateur d'objets
    2. Quand je l'appelle le compléteur ne la voit pas...

    Je l'appelle ainsi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    		public static Decode.decode getDLL_decode() {
     
    			return new decode.decode();
    		} 
     
    		protected void Session_Start(Object sender, EventArgs e)
    		{
    			decode.decode mavar = WindowsApplication7.decode.getDLL_decode();
    		}
    Qu'est-ce qui cloche ?

  4. #4
    Membre expert

    Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2003
    Messages
    1 737
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2003
    Messages : 1 737
    Points : 3 137
    Points
    3 137
    Par défaut


    je fais ca assez souvent et j'ai jamais eu à me poser de questions ... c'est totalement transparent.

    apparament, tu mets bien tes 2 classes dans 2 librairies différentes, donc je vois pas du tout ce qui cloche

    tu rajoute une référence au projet ou a la dll compilée ???

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Octobre 2005
    Messages : 46
    Points : 19
    Points
    19
    Par défaut
    à la dll compilée...

  6. #6
    Membre expert

    Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2003
    Messages
    1 737
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2003
    Messages : 1 737
    Points : 3 137
    Points
    3 137
    Par défaut
    quand tu as les sources ajoute la référence au projet, tu seras sur que la version de la classe que tu utilise est bien la dernière ...

    réessaye comme ca et tien nous au courant

  7. #7
    Rédacteur
    Avatar de abelman
    Inscrit en
    Février 2003
    Messages
    1 106
    Détails du profil
    Informations forums :
    Inscription : Février 2003
    Messages : 1 106
    Points : 2 629
    Points
    2 629
    Par défaut
    SAlut

    Il ne te manquerait pas un public pour la fonction de la classe Decode?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     public Function Decode(ByVal CodedText as string) As String

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Octobre 2005
    Messages : 46
    Points : 19
    Points
    19
    Par défaut
    Ok ça marche

    j'ai supprimé le projet et j'en ai recréé un qui s'appelle Decode, j'ai mis Decode partout, car mon projet s'appelait Decoder, je pense qu'il y avait un conflit avec la classe System.Text.Decoder,

    merci les gars !

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Octobre 2005
    Messages : 46
    Points : 19
    Points
    19
    Par défaut
    En résumé,

    1. Je créé un nouveau projet VB dans ma solution qui contient déjà un projet C#

    2. J'y ajoute ma classe "Decode.vb"

    3. Je compile ma solution

    4. J'ajoute une référence dans mon projet C# vers la classe compilée "Decode.dll" qui se trouve dans "Decode/bin"

    5. Maintenant elle est visible dans l'explorateur d'objets et je peux y accéder via (par exemple) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    		protected void Session_Start(Object sender, EventArgs e)
    		{
    			Decode.decode test = new Decode.decode();
    			Session["login"] = test.Decode(Request.ServerVariables["HTTP_AUTHORIZATION"]);
    		}
    Voilà, merci à tous...

  10. #10
    Membre expert

    Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2003
    Messages
    1 737
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2003
    Messages : 1 737
    Points : 3 137
    Points
    3 137
    Par défaut
    Citation Envoyé par Amerok
    4. J'ajoute une référence dans mon projet C# vers la classe compilée "Decode.dll" qui se trouve dans "Decode/bin"
    pourquoi tiens-tu absolument à utiliser la classe compilée

  11. #11
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Octobre 2005
    Messages : 46
    Points : 19
    Points
    19
    Par défaut
    Car sinon ça ne fonctionne pas...

  12. #12
    Membre expert

    Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2003
    Messages
    1 737
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2003
    Messages : 1 737
    Points : 3 137
    Points
    3 137
    Par défaut
    alors la tu m'étonne quand même beaucoup ...

  13. #13
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Octobre 2005
    Messages : 46
    Points : 19
    Points
    19
    Par défaut
    Après avoir lu ton message, j'ai testé... et si j'enlève la référence, il ne voit plus la classe Decode. Dès que je la remets, cela fonctionne.

  14. #14
    Membre expert

    Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2003
    Messages
    1 737
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2003
    Messages : 1 737
    Points : 3 137
    Points
    3 137
    Par défaut
    ca c'est plutot normal

    mais avec visual studio, tu peux référencer (fenetre ajouter une référence):

    - Une librairie .Net
    - Une librairie COM
    - Un projet existant (.vbproj, .csproj, ...)

    dans ton cas, c'est le 3 qui est le plus adapté

    [edit] le projet en question doit faire parti de ta solution [/edit]

  15. #15
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Octobre 2005
    Messages : 46
    Points : 19
    Points
    19
    Par défaut
    ok merci je saurai au cas où

    bonne soirée

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2010] sélection des données depuis une base de données depuis une autre feuille
    Par Learning everyday dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 05/11/2014, 10h14
  2. Réponses: 6
    Dernier message: 31/10/2012, 16h01
  3. Réponses: 14
    Dernier message: 23/04/2012, 22h32
  4. appeler du .NET depuis une dll non managé
    Par sebs_78 dans le forum VC++ .NET
    Réponses: 1
    Dernier message: 05/12/2007, 09h36
  5. Appeler une Applet ou servlet depuis une classe java
    Par oussam dans le forum Applets
    Réponses: 2
    Dernier message: 04/07/2006, 13h58

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo