2010-07-16 15 views
3

J'écris une application cliente C# qui est destinée à avoir un support solide pour la personnalisation via le script, et j'ai choisi IronPython comme langage de script cible. Je voudrais garder le code de l'utilisateur dans la base de données de l'application avec le reste de son état, mais j'ai besoin que l'utilisateur puisse scinder leurs scripts en fichiers et en modules.Comment puis-je configurer des importations dynamiques lors de l'hébergement de IronPython?

Comment puis-je configurer le moteur IronPython afin qu'il utilise des chaînes (avec des chemins virtuels correspondants) comme source pour les importations, plutôt que de spécifier un répertoire dans le système de fichiers de l'utilisateur? Est-ce possible?

Répondre

3

Vous devez sous-classer la classe PlatformAdaptationLayer et implémenter les appels "système de fichiers". IronPython ira ensuite à la PAL pour faire des E/S pour les fichiers. Cela implique également l'implémentation d'un ScriptHost qui renvoie le type pour le PAL. Un bon exemple de ceci est l'hôte Silverlight qui redirige les E/S de fichier vers un fichier XAP.

Si vous parcourez la source IronPython sur IronPython.CodePlex.com, vous trouverez l'hôte Silverlight dans IronPython_Main \ Hosts \ Silverlight \ Microsoft.Scripting.Silverlight.