Je veux créer une instance d'une classe Ironpython de C #, mais mes tentatives actuelles semblent avoir échoué.
Ceci est mon code actuel: P>
class MyClass(object): def __init__(self): print "this should be called" Foo.Instantiate(MyClass)
3 Réponses :
On dirait que vous recherchez la réponse donnée à cette question à la question a >. P>
Les réponses n'ont jamais annoncé quoi que ce soit sur l'instanciation de l'objet - la classe de calculatrice dans l'exemple n'a pas de méthode constructeur et que cela ne répond donc pas vraiment à ma question.
Cette solution de Q SO QUI fonctionne bien pour moi et ajoute une méthode __ init __ code> la méthode est exécutée (à l'aide de l'instance code> .OPERATIONS code> comme indiquée là-bas). Je n'ai pas de .NET 4.0 à essayer, mais je serais étonné de casse les choses dans la transition 4.0.
Cet exemple n'est pas entièrement convaincu pour moi, car je passe le type lui-même au code C #, plutôt qu'une variable scopée, c'est-à-dire via une fonction, ce qui pourrait être la raison pour laquelle la méthode __ init __ code> n'est pas la méthode. appelé.
Ce code fonctionne avec IronPython 2.6.1 édité selon une question clarifiée forte> p>
La chose est que je n'utilise pas Scope.gevariable Code> - Je passe les types directement à C # sous la forme du type C #
Type CODE> classe, principalement parce que j'ai besoin de Appeler la fonction de toutes sortes de places et la variable pourrait ne pas être nécessairement disponible dans cette portée.
Même si j'ai répondu à ma propre question, je pense toujours que vous méritez d'être la réponse acceptée :)
Je pense que j'ai résolu ma propre question - à l'aide de la classe .NET le remplacer par type code> semble avoir rejeté les informations de type Python. p>
ironpython.runtime.types.pytthontype code> fonctionne assez bien. p>
Dupliqué possible de Instanciation d'une classe Python en C #
Après avoir examiné la source IronPython, la méthode _ init _ i> est définie comme annulation publique __init __ (objet o) {}. Whoops.