Appel de finction C# à partir de VB.Net 2008 [Résolu]

Signaler
Messages postés
12
Date d'inscription
mardi 7 janvier 2003
Statut
Membre
Dernière intervention
13 juin 2010
-
Messages postés
14779
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
3 avril 2021
-
Bonjour
J'ai développé un projet en VB 2008 et je voudrais y ajouter des fonctions en C#. J'ai créer une classe C#, référencé cet assembly dans mon projet VB mais rien n'y fait je n'arrive pas à appeler mes fonctions C#. Quelqu'u a-t-il un conseil ?

Riccodev

6 réponses

Messages postés
12
Date d'inscription
mardi 7 janvier 2003
Statut
Membre
Dernière intervention
13 juin 2010

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace FonctionDiversC
{
public class Class1
{
public long pgcdc(long Lead, long Bight)
{
// Fonction récursive permettant le calcul du PGCD en utilisant l'algorithme d'Euclide
{
if (Bight == 0) return Lead;
else return pgcdc(Bight, Lead % Bight);
}
}
}
}

Shared Sub Initialisation(ByVal Lead As String, ByVal Bight As String)
' -----------------------------------------------------------------------------------------------------------
' S/P d'initialisation des différents paramètres utile pour le calcul d'un THK
' -----------------------------------------------------------------------------------------------------------
' Récupération du nombre de Lead et du nombre de Bight.
' Bight et Leadne peuvent pas être = 0 celà n'a pas de sens dans un THK de plus les calculs
' suivants l'interdisent
ZTC.Bight = Val(Bight)
ZTC.Lead = Val(Lead)
If ZTC.Bight 0 Or ZTC.Lead 0 Then Exit Sub

' Fourniture d'une version chaine de chaque
' ainsi que du nom du THK sous la forme xL yB
ZTC.BightChaine = Bight + "B"
ZTC.LeadChaine = Lead + "L"
ZTC.NomRKnot = Lead + "L " + Bight + "B"

' Calcul de -L Mod B puis de L Mod B
ZTC.MoinsLB = ((ZTC.Bight * ((ZTC.Lead \ ZTC.Bight) + 1)) - ZTC.Lead) Mod ZTC.Bight
ZTC.PlusLB = ZTC.Lead Mod ZTC.Bight

' Calcul du PIN Step
ReDim ZTC.PinStep(1)
ZTC.PinStep(0) = ZTC.Lead \ 2
ZTC.PinStep(1) = (ZTC.Lead \ 2) + (ZTC.Lead Mod 2)

' Calcul du PGCD (Plus Grand Commun Diviseur). Sur un THK L et B ne doivent pas être premier entre eux
' construction impossible avec un seul brin
ZTC.ControlPGCD = PGCD(ZTC.Bight, ZTC.Lead)
' La même chose mais appel de la fonction C# --> le nom pgdcc n'est pas déclaré
ZTC.ControlPGCD = pgcdc(ZTC.Bight, ZTC.Lead)

' Remise à zéro des compteurs d'Over et d'Under, et de la bascule
ZTC.CptOver = 0
ZTC.CptTotal = 0
End Sub

C'est la fonction pgcdc que je ne peux pas appeller, je ne comprends pas
Riccodev
Messages postés
14779
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
3 avril 2021
154
Bonjour,

Normal, ton appel est erroné.

Pourquoi utilisé C# pour une seule fonction et pas le faire en vB ?

Sinon, change un peu ton code C# :
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace FonctionDiversC
{
public class Class1
{
public static long pgcdc(long Lead, long Bight)
{
// Fonction récursive permettant le calcul du PGCD en utilisant l'algorithme d'Euclide
{
if (Bight == 0) return Lead;
else return pgcdc(Bight, Lead % Bight);
}
}
}
} 


Et pour la partie VB, à la place de :
ZTC.ControlPGCD = pgcdc(ZTC.Bight, ZTC.Lead)
Fais :
ZTC.ControlPGCD = FonctionDiversC.Class1.pgcdc(ZTC.Bight, ZTC.Lead)

Mon site
Messages postés
14779
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
3 avril 2021
154
Bonjour,

Si la réponse te convient, merci de la marquée en "réponse acceptée" afin de faciliter les recherches d'autres utilisateurs :)

Mon site
Messages postés
14779
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
3 avril 2021
154
Bonjour,

Tu peux montrer un peu de code ?
Car j'aurais du mal à te répondre, je n'ai jamais eu de problème de ce genre (juste une fois, 2 membres d'une classe avec 2 casse différentes et VB ne parvenait pas à savoir quel membre appeler.

Mon site
Messages postés
7741
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
37
...2 membres d'une classe avec 2 casse différentes...


Oh ça c'est moche comme code.
C'est des raison pour lesquelles je déteste le Case Sensitive dans les langages, c'est parfaitement inutile et sources d'erreurs extrêmement difficile à trouver.


[i][b]---- Sevyc64 (alias Casy) ----
[hr]# LE PARTAGE EST NOTRE FORCE #/b/i
Messages postés
12
Date d'inscription
mardi 7 janvier 2003
Statut
Membre
Dernière intervention
13 juin 2010

Merci pour ta réponse, effectivement ma fonction C# n'était pas correctement déclarée. Maintenant pourquoi une seule fonction en C#, tout simplement parce que c'était un premier essai afin de m'initier à l'appel de fonctions C#. Dans quelques temps je migrerai des fonctions plus importantes. Je connais le VB.NET mais ce sont mes premiers pas en C#.
Merci encore pour ton aide qui m'a permis d'avancer dans cette voie
Cordialement

Riccodev