Pas de questions techniques par MP ! Le forum est là pour ça...
Tutoriels : Les nouveautés de C# 6 - Accès aux données avec Dapper - Extraction de données de pages web à l'aide de HTML Agility Pack - La sérialisation XML avec .NET (Aller plus loin) - Les markup extensions en WPF
Aaaaa... relit mon dernier post... jai editer pendant que ta poster
EDIT: Minute... je crois savoir pkoi...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31 private void W_Compiler2() { string W_MyCode = "if(true){txtRecruits1.Text = \"Fonctionne\";}"; CodeDomProvider cc = new CSharpCodeProvider(); CompilerParameters cp = new CompilerParameters(); cp.ReferencedAssemblies.Add("System.dll"); cp.ReferencedAssemblies.Add("System.Data.dll"); cp.ReferencedAssemblies.Add("System.Windows.Forms.dll"); cp.ReferencedAssemblies.Add(typeof(Form1).Assembly.Location); string toCompile = "using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Text;using System.Windows.Forms;using System.Collections;" + "namespace Arcomage{"+ "public class ClassTmp:Form1{"+ "public ClassTmp(){}"+ "public void FunctionTmp(){" + W_MyCode + "}}}"; CompilerResults cr = cc.CompileAssemblyFromSource(cp, toCompile); if (cr.Errors.HasErrors) { String text = "Il y a eu des erreurs dans la compilation d'un script :\n"; foreach (CompilerError err in cr.Errors) text += err + "\n"; Console.WriteLine(text); return; } Assembly a = cr.CompiledAssembly; Type classTmp = a.GetType("Arcomage.ClassTmp"); object tmp = Activator.CreateInstance(classTmp); MethodInfo methodinf = classTmp.GetMethod("FunctionTmp"); methodinf.Invoke(tmp, new object[0]); }
Ca me donne pas de message d'erreur, mais rien n'affiche dans mon textbox.
Je suis si pret/pres/prait du but... je suis tout febrile
Je spam F5 en esperant avoir une reponse de tomlev![]()
Ben c'est logique en fait... L'objet tmp n'est pas la form affichée dans ton programme, c'est une nouvelle instance de ClassTmp, elle-même héritée de Form1. Ce sont deux objets différents, donc ton code accède en fait à une autre TextBox...
Il faudrait que tu passes Form1 en paramètre de FunctionTmp
Pas de questions techniques par MP ! Le forum est là pour ça...
Tutoriels : Les nouveautés de C# 6 - Accès aux données avec Dapper - Extraction de données de pages web à l'aide de HTML Agility Pack - La sérialisation XML avec .NET (Aller plus loin) - Les markup extensions en WPF
Ok... Je supose que je vais changer une ligne pour
mais ensuite, comme je lui envoit mon Form1?
Code : Sélectionner tout - Visualiser dans une fenêtre à part "public void FunctionTmp(Form1 MyForm){" + W_MyCode + "}}}";
Et vais-je devoir changer une ligne pour
?
Code : Sélectionner tout - Visualiser dans une fenêtre à part string W_MyCode = "if(true){MyForm.txtRecruits1.Text = \"Fonctionne\";}";
Et question hors contexte... comment je fais pour editer ma Signature? Je ne trouve pas l'option dans mon profile
En paramètre de methodinf.Invoke
Tout à fait
Tu ne peux pas, parce que tu n'es pas encore membre du club
Tu auras accès à cette option quand tu auras posté plus de 50 messages
http://www.developpez.net/forums/d15...-membres-club/
Pas de questions techniques par MP ! Le forum est là pour ça...
Tutoriels : Les nouveautés de C# 6 - Accès aux données avec Dapper - Extraction de données de pages web à l'aide de HTML Agility Pack - La sérialisation XML avec .NET (Aller plus loin) - Les markup extensions en WPF
Evidement ca marche pas... mais la jai ma journee dans le corps et le cerveau fonctionne vraiment pas...
Code : Sélectionner tout - Visualiser dans une fenêtre à part methodinf.Invoke(tmp, this);
50 posts... ca invite pas au trolling?
EDIT: Bon, je vais me coucher... j'arrive plus a tenir debout... assis.. whatever
Normal : le 2e paramètre de Invoke est un tableau d'objets (la méthode pourrait avoir plus d'un paramètre...)
Essaie un peu pour voir
Code : Sélectionner tout - Visualiser dans une fenêtre à part methodinf.Invoke(tmp, new object[] { this });
![]()
Pas de questions techniques par MP ! Le forum est là pour ça...
Tutoriels : Les nouveautés de C# 6 - Accès aux données avec Dapper - Extraction de données de pages web à l'aide de HTML Agility Pack - La sérialisation XML avec .NET (Aller plus loin) - Les markup extensions en WPF
Je fais un reve homo erotique de la mort... jme reveille, je suis sure qu'il est genre 7 ou 8 heure du matin... ben non... 11 heure et demi du soir...
Alors j'essaye le truc que tu me dit et ca me donne ca
Comment un truc APRES la compilation peut-il donner une erreur lors de la compilation?Il y a eu des erreurs dans la compilation d'un script :
c:\Users\Wildhorn\AppData\Local\Temp\bswuhdxv.0.cs(1,283) : error CS1540: Cannot access protected member 'Arcomage.Form1.txtRecruits1' via a qualifier of type 'Arcomage.Form1'; the qualifier must be of type 'Arcomage.ClassTmp' (or derived from it)
Mais bon... jai changer mon txtbox pour Public et ca FONCTIONNE!
Merci...
Et la jme rend compte que ya pas de smiley ovation... alors voici une vague
![]()
Avant de clicker sur resolu... yaurait til un moyen de guarder mon textbox en protected?
Pas de questions techniques par MP ! Le forum est là pour ça...
Tutoriels : Les nouveautés de C# 6 - Accès aux données avec Dapper - Extraction de données de pages web à l'aide de HTML Agility Pack - La sérialisation XML avec .NET (Aller plus loin) - Les markup extensions en WPF
Ouais, je trouve ca bizzare aussi. Tant pis... c'est pas la fin du monde anyway.
Vraiment, pense sérieusement à utiliser un interpréteur de script, du genre LuaInterface! Ca s'interface très très facilement avec dotnet (VB ou C#), tu peux trouver des renseignements partour dans google, le télécharger aussi... et ta ligne de commande, qui n'est pas écrite en C# ni en VB mais en Lua, s'exécute en tout et pour tout avec la commande:
C'est peut-être moins sportif que d'écrire 50 lignes pour compiler du C# à la volée, créer des instances par réflexion et les exécuter de même, mais au moins, ça a l'avantage de fonctionner et d'être simple!
Code : Sélectionner tout - Visualiser dans une fenêtre à part lua.DoString("commande")
Partager