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
14821
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
18 septembre 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
14821
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
18 septembre 2021
156
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
14821
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
18 septembre 2021
156
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
14821
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
18 septembre 2021
156
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
41
...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