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...![]()
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...![]()
Peut-être qu'il y a mieux, mais voilà ma solution :
Dans ta classe en C#, tu déclare ta classe VB
Et pour l'utiliser :
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(); }
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]
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,...);
C_variables est ici le fichier où tu as fais la déclaration de la classe.
Merci du coup de main... mais ça marche pas trop pour moi
Voilà ma classe :
elle est compilée dans la dll Decode.dll.
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
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 :
Qu'est-ce qui cloche ?
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(); }
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 ???
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![]()
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
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 !
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) :
Voilà, merci à tous...
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"]); }
pourquoi tiens-tu absolument à utiliser la classe compiléeEnvoyé par Amerok
![]()
alors la tu m'étonne quand même beaucoup ...
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.
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]
Partager