blobette
Messages postés11Date d'inscriptionjeudi 17 juin 2004StatutMembreDernière intervention 6 mai 2008
-
25 juil. 2007 à 10:57
blobette
Messages postés11Date d'inscriptionjeudi 17 juin 2004StatutMembreDernière intervention 6 mai 2008
-
28 juil. 2007 à 00:05
Bonjour à tous,
Je suis à la recherche d'un moyen pour réaliser la chose suivante en C# : j'aurais une IHM dans laquelle l'utilisateur pourra ecrire en C# des petits programme, utilisant des objets ainsi que des methodes que je lui fournirai. Ce bout de code doit pouvoir être compile dynamement et être stocké de façon à ce que l'ihm puisse permettre d'y accéder et de l'executer ensuite.
J'ai pense que je pourrai peut etre creer dynamiquement des dll, avec des points d'entree implementant tous une interface donnee. Pour accéder dynamiquement depuis mon programme (celui de l'IHM) aux nom des dll dispo (pour pouvoir donner a l'utilisateur la liste des procedures dispo) on m'a parlé des méthodes du namespace "Reflection". Ainsi, j'aurai a récuperer juste le nom de la dll et apres comme les dll créables dans l'ihm implémenteraient toutes la meme interface, je pourrais appeler la procedure principale facilement sans changer mon code.
C'est une theorie, qu'en pensez-vous?
un de mes principaux problemes est que je ne sais pas du tout comment creer dynamiquement une dll avec une interface specifique dedans et tout....
voilou
j'espere que vous pourrez m'eclairer!
merki
ShareVB
Messages postés2676Date d'inscriptionvendredi 28 juin 2002StatutMembreDernière intervention13 janvier 201626 26 juil. 2007 à 23:13
salut,
tu as plusieurs techniques possibles :
-> les "macros" en c#/vb.net compilé
-> le principe de plugin : cela nécessite de créer une interface commune mais aussi de développer les plugins avec visual studio...je ne pense pas qu'il soit raisonnable de générer des plugins à la volée...de plus ce n'est pas vraiment le contexte
en fait, tu peux générer des assemblies de plusieurs manières :
-> avec un fichier source préétabli que tu as ou que tu construit à partir de chaines et que tu peux compiler avec Microsoft.CSharp.CSharpCodeProvider
-> tu construis un code c#/vb.net à partir de bout de code (implémentation des méthodes) et tu laisses CodeDom faire la structure du fichier source
-> tu construis directement l'assembly en IL avec System.Reflection.Emit...mais ca c'est plus limité
blobette
Messages postés11Date d'inscriptionjeudi 17 juin 2004StatutMembreDernière intervention 6 mai 2008 28 juil. 2007 à 00:05
Merci pour ces reponses!
j'ai fait des tests avec cette solution :
"en fait, tu peux générer des assemblies de plusieurs manières :
-> avec un fichier source préétabli que tu as ou que tu construit à partir de chaines et que tu peux compiler avec Microsoft.CSharp.CSharpCodeProvider" > ShareVB