Je suis interface avec une API .NET dans IronPython. L'API renvoie un objet du mauvais type (une sorte d'objet générique). Je soupçonne que le problème ne se présente pas dans leur code C # car la déclaration de type lorsque l'objet est construit est forçant l'objet renvoyé au type correct. Est-il possible de taper un objet .NET dans IronPython? Je pense que cela ferait l'affaire. P>
4 Réponses :
Pour forcer une conversion, vous pouvez faire:
import clr convertedObject = clr.Convert(someObject, someType)
Je ne pouvais pas obtenir ça pour travailler. Je n'ai pas pu trouver une méthode "convertie" dans mon CLR IronPython.
convert code> invoque une méthode de conversion explicite / implicite s'il en existe un; S'il n'y a pas, il renvoie l'objet inchangé. Ça ne peut pas par exemple jeter un objet à son type parent.
Si j'essaie d'utiliser cela pour lancer un UINT32 dans un INT16, je reçois une exception overflowException. Existe-t-il un moyen de faire cela qui fonctionne comme un Var Y = (court) explicite x; jeter?
J'ai eu un problème similaire sur un projet il y a quelques mois. C'était mon correctif: Je ne suis pas un programmeur C #, mais on m'a dit par C # Programmeur de collègues que ce code en C # serait: p> espoir Cela aide p> p> x code> peut être un type .NET ou un type dans un fichier DLL que vous avez importé à l'aide de
CLR Code>. P>
CLR.Convert n'existe pas dans IronPython 2.0. Ce n'est pas une solution pour taper un objet .NET dans IronPython?, Mais c'est une solution de contournement de convertir les données si vous en avez vraiment besoin pour l'utiliser de em> ironpython Créer une classe comme celle-ci dans VB .Net et compilez-le dans une DLL p> puis dans IronPython, vous faites p>
Si vous devez lancer une valeur numérique à un Enum code> Utilisez ce qui suit, car le code ci-dessus ne fonctionne pas pour Enums, mais uniquement pour les types de référence:
Enum.ToObject(CustomEnumType, value)
Pourriez-vous élaborer un peu plus? Qu'entendez-vous par mauvais type?
Il semble que Ironpython remplit toujours des membres d'un objet en fonction de son type "réel" (puisqu'il utilise la réflexion pour déterminer ce type). Pouvez-vous nous donner un exemple où cela ne supporte pas?