Python for .NET et héritage - C#/.NET managed - Programmation
Marsh Posté le 28-06-2005 à 16:55:44
Apparamment, le problème viendrait du fait que l'objet ne sait pas de quel type il est, je continue à chercher dans cette direction ... Toute suggestion est bienvenue, cependant
Marsh Posté le 28-06-2005 à 19:07:35
Bon ... Mieux, encore, j'ai tenté de charger un module et e n'y parviens pas ... Si quelqu'un sait comment modifier une variable d'environnement en C#, je suis preneur.
Marsh Posté le 29-06-2005 à 12:28:08
mbon, il semblerait qu'après la mise en place du hook d'imports (pour intercepter les imports de CLR), les imports "normaux" ne passent plus ...
En clair, soit je peux faire des imports sur du CLR, soit je peux faire des imports sur des modules python classiques ... mais pas les deux à la fois
Toujours personne qui connait le sujet ?
Marsh Posté le 30-06-2005 à 16:10:33
De plus en plus précis :
Python for .Net remplace la fonction d'import de python (__builtin__.__import__) par un appel à une de ses fonctions statiques internes tout en gardant une référence sur la méthode normale d'import.
Ainsi, si on fait un import sur CLR.quelque chose, Python for .Net peut intercepter l'appel (si ca ne commence pas par CLR, il fait suivre la demande d'import à la méthode 'sauvegardée')
Le problème vient lorsque je demande à faire un import d'un module depuis mon code en C#, pourtant, le PythonEngine.Import() se contente d'appeler la lib python pour lui demander de faire l'appel à __builtin__.__import__ (qui pointe donc sur la fonction C# à ce moment là) et la méthode "foire" (j'ai encore du mal à comprendre tous les détails) dans ce cas là.
En revanche, si je vire le internal de la classe qui déclare le import en C# et que je l'utilise directement (donc plus de DLL intermédiaire), l'import fonctionne à merveille ...
Je me demande donc s'il n'y a pas une raison particulière que je ne connaitrais pas pour que cet appel échoue (je rappelle que la méthode import en C# fonctionne bien jusqu'à ce qu'on transmette l'appel à la DLL)
Marsh Posté le 19-07-2005 à 10:54:51
theshockwave a écrit : Si quelqu'un sait comment modifier une variable d'environnement en C#, je suis preneur. |
si ca peut servir à quelqu'un ...
http://support.microsoft.com/defau [...] -us;829145
Citation : SYMPTOMS |
Citation : STATUS |
Marsh Posté le 19-07-2005 à 11:53:07
priez pour qu'on tombe sur quelqu'un qui connaisse un peu C#, sinon on va encore bouffer du SetEnviron(key, value) ...
Marsh Posté le 19-07-2005 à 11:59:31
explique ta vision des choses, parce que je découvre à peine le langage, là (et je dois avouer que j'ai du mal à voir sur quel point porte ta remarque)
Marsh Posté le 19-07-2005 à 12:07:00
ben je l'ai déjà dit : y a la moitié des mecs qui font la bibli de .Net qui ont jamais fait de C#. C# propose des trucs sympatoches : surcharges de quelques opérateurs, et property.
Donc, on ne devrait plus jamais voir de get/set !
ici, on devrait avoir ça
Code :
|
mais bon ne rêvons pas ... si tu regarder, y a plein de trucs pourris dans l'API, genre File.Get<machin>time(), etc, c'est loin d'être marginal ... c'est chiant
Marsh Posté le 19-07-2005 à 12:18:29
Effectivement, je n'étais pas encore tombé sur ce genre de choses Les quelques fonctionnalités que j'ai pu utiliser passaient bien par des properties, pour ma part.
Marsh Posté le 19-07-2005 à 17:44:21
bien encore, avec les stream binary, tu as un
int Length { get; }
et
void SetLength(int) { } ...
Marsh Posté le 19-07-2005 à 17:52:35
Joli, ... Joli ... Effectivement, ca fait assez mal de voir ca
Marsh Posté le 28-06-2005 à 16:40:10
je viens de me mettre à utiliser Python for .Net (http://www.zope.org/Members/Brian/PythonNet) et j'ai un petit souci ... J'aurais besoin de faire communiquer l'appli et je pensais à une méthode qui me semblait assez élégante dans le principe :
du côté python :
avec l'objet passé en tant que "stats" un objet purement C# dérivant de la classe PyObject proposée par la lib :
le problème est bien évidemment d'arriver à faire un objet C# qui passe bien dedans les appels python.
Pour l'instant, je prends une exception avant même d'entrer dans le code python à vrai dire : je construis un dictionnaire python avec l'interface proposée par la lib, et l'ajout d'une instance de StatisticsUpdaterImp dans le dico lève une PythonException pas forcément très explicite
Je voulais simplement savoir si quelqu'un avait déjà tenté ce genre de subtilité (j'ai quelques doutes sur le fait que ce soit possible, à vrai dire) ou des remarques à me faire (étant donné que je ne suis à l'aise ni avec python, ni avec C# )
merci d'avance.
Edit : ca pourra toujours être utile ... voilà les lignes qui conduisent à l'exception :
Message édité par theshockwave le 28-06-2005 à 16:44:33