2009-05-13 6 views
3

J'utilise IronPython 2.0 dans une fenêtre de console SharpDevelop 3.1. J'essaie de référencer et d'utiliser la bibliothèque de remplacement Redemption CDO.IronPython et instanciation des objets COM

L'utilisation standard de la bibliothèque est d'instancier un objet RDOSession, puis utilisez les méthodes sur cet objet pour naviguer dans le modèle d'objet RDO.

J'ai enregistré la dll Redemption COM et je l'ai référencée à partir d'un projet, qui a créé un assembly interop pour cela. Dans la fenêtre de la console IronPython, je fais alors le suivant: importation clr clr.AddReferenceToFileAndPath (R'D: \ SharpDevelop Projets \ TestPython \ TestPython \ obj \ Debug \ Interop.Redemption.dll ') import Redemption

Cela fonctionne jusqu'à présent. L'étape suivante consisterait à obtenir un objet RDOSession et à l'instancier. Si cela a fonctionné, ce serait ce que je pense à faire:

session = Redemption.RDOSession()

Cependant, cela donne une erreur: TypeError: ne peut pas créer des instances de RDOSession

Alors ma question est (ou était): comment puis-je instancier un objet comme RDOSession?

Cependant, je viens de répondre à ma propre question dans ma tentative de l'expliquer. Je vais continuer avec la réponse car, malgré le fait qu'il semble presque ridicule peut-être de le faire, il sera utile à quelqu'un d'autre. Lorsque je suis entré dans la ligne "session = Redemption.RDOSession()", l'appel est arrivé avec "RDOSession" et "RDOSessionClass" juste en dessous. Je ne sais pas comment ce dernier a été généré, mais cela ressemblait à un objet instanciable (si c'est un mot).

>>> session = Redemption.RDOSessionClass()

>>>

Et voilà. L'appel de la méthode Logon a fonctionné comme un champ sur le nouvel objet de session.

Merci stackoverflow!

+0

Impressionnant. Fonctionne bien et me permet de faire des choses vraiment cool. –

Répondre

0

Vous devez utiliser:

session = Redemption.RDOSessionClass() 
+0

Ha har! Ça a marché! :-) Je te dois un. –