Travailler sur un projet qui utilise des scripts IronPython comme plug-ins, qui utilisent la fonctionnalité codée en C#. Dans une de mes classes C#, j'ai une propriété qui est de type:C#/IronPython Interop et le type de données "float"
Dictionary<int, float>
Je mis la valeur de cette propriété à partir du code IronPython, comme ceci:
mc = MyClass()
mc.ValueDictionary = Dictionary[int, float]({1:0.0, 2:0.012, 3:0.024})
Cependant, lorsque ce bit de code est exécuté, il jette l'exception suivante:
Microsoft.Scripting.ArgumentTypeException was unhandled by user code
Message=expected Dictionary[int, Single], got Dictionary[int, float]
Pour rendre les choses plus étranges, à l'origine du code C# utilisé
Dictionary<int, double>
mais je n'ai pas pu trouver un type "double" dans IronPython, j'ai essayé "float" sur un coup de tête et ça a bien fonctionné, sans donner d'erreur. Mais maintenant qu'il utilise float sur les deux extrémités (qu'il aurait dû utiliser depuis le début) il erreurs, et pense que le code C# utilise le type de données "Single" ?!
J'ai même vérifié dans le navigateur d'objets pour la bibliothèque C# et, bien sûr, il montre que l'utilisation d'un type « float » et non « Single »
Merci, réponse parfaite. Et ouais, je suppose que j'avais déjà défini ce que les cartographies étaient, je ne savais pas pourquoi. Il semblait juste contre intuatif que float en C# ne soit pas flottant en Python. –
Vous êtes les bienvenus! J'ai eu un problème similaire récemment (C#/Python Interop). C'est en effet très contre-intuitif, comme tous les langages C-like, Java et beaucoup d'autres utilisent 'float' pour les nombres de précision simple. –