PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV (précédentes versions) → Assembly ayant une classe avec deux méthodes identiques
Assembly ayant une classe avec deux méthodes identiques
Débuté par Philippe Pasquali, 15 juin 2022 15:59 - 3 réponses
Membre enregistré
892 messages
Popularité : +102 (110 votes)
Posté le 15 juin 2022 - 15:59
Bonjour
Complétement novice dans l'utilisation des assembly en Windev, je me trouve devant ce problème.
En C# :
dynamic json = JsonConvert.DeserializeObject(v);

que j'ai traduit en WLangage par
DataJson est un objet dynamique
DataJson = JsonConvert.DeserializeObject(v)


La compilation passe mais l'exécution génère l'erreur :
Le framework .NET a renvoyé l'erreur suivante : Correspondance ambiguë trouvée.

Effectivement dans l'explorateur de projet j'ai deux fois la même méthode DeserializeObject avec les mêmes paramètres dans la classe JsonConvert.





en C# cela ne provoque aucune erreur...
une idée ?

--
«Nos clients sont nos meilleurs beta testeur.» H. Mintzberg
«Un programme informatique fait ce que vous lui avez dit de faire, pas ce que vous voulez qu'il fasse» Troisième loi de Greer
Membre enregistré
186 messages
Popularité : +24 (28 votes)
Posté le 15 juin 2022 - 17:16
Bonjour Philippe
Cela ressemble à un appel récursif ou double appel mal géré par WD ...
Je n'ai pas encore rencontré ce problème avec du code C# importé dans WD.
Quelle est la version du compilateur WD ?
Bien Cordialement
Membre enregistré
892 messages
Popularité : +102 (110 votes)
Posté le 17 juin 2022 - 12:41
Bonjour
Version windev : 01F240042h installé en 32 bits générant un e application 32 bits.
La dl .NET est : Newtonsoft.Json.dll (\bin\Net45) téléchargée sur
https://github.com/JamesNK/Newtonsoft.Json/releases/download/13.0.1/Json130r1.zip qui est elle aussi en 32 bits (vérifié avec dumpbin)
La même dll utilisée dans une fonction Csharp dans une collection de procédure globale fonctionne.

--
«Nos clients sont nos meilleurs beta testeur.» H. Mintzberg
«Un programme informatique fait ce que vous lui avez dit de faire, pas ce que vous voulez qu'il fasse» Troisième loi de Greer
Posté le 20 juin 2022 - 10:57
Philippe Pasquali vient de nous annoncer :
Bonjour
Version windev : 01F240042h installé en 32 bits générant un e application 32
bits.
La dl .NET est : Newtonsoft.Json.dll (\bin\Net45) téléchargée sur
https://github.com/JamesNK/Newtonsoft.Json/releases/download/13.0.1/Json130r1.zip
qui est elle aussi en 32 bits (vérifié avec dumpbin)
La même dll utilisée dans une fonction Csharp dans une collection de
procédure globale fonctionne.


bonjour,

je ne sais pas si cela peut vous aider mais dans le code de test de
votre lien il fait des appels en "typant" l'envoi (<bool> ou <object>)
comme suit :

bool b = JsonConvert.DeserializeObject<bool>("true");
Assert.AreEqual(true, b);

object n = JsonConvert.DeserializeObject<object>("null");
Assert.AreEqual(null, n);

object u =
JsonConvert.DeserializeObject<object>("undefined");
Assert.AreEqual(null, u);

int i = JsonConvert.DeserializeObject<int>("1");
Assert.AreEqual(1, i);

ou encore

public void TestInvalidStrings()
{
ExceptionAssert.Throws<JsonReaderException>(() =>
{
string orig = @"this is a string ""that has quotes"" ";

string serialized = JsonConvert.SerializeObject(orig);

// *** Make string invalid by stripping \" \"
serialized = serialized.Replace(@"\""", "\"");

JsonConvert.DeserializeObject<string>(serialized);
}, "Additional text encountered after finished reading JSON
content: t. Path '', line 1, position 19.");
}

--
Cordialement JeAn-PhI