Hi,
thepaine91 hat folgendes geschrieben : |
Warum sollte man sowas tun? :O
Habe aber mal Google bemüht und nach geschätzten 2 Minuten eine Lösung erhalten. |
Naja, habe auch mal geschaut, aber das Ganze ist nun wirklich nicht so einfach. Also mit 2 Minuten war es sicher nicht getan!
3marci hat folgendes geschrieben: |
| Ich denke man kann so ziemlich alles Googlen, warum schliessen wir das Forum nicht einfach!? |
Also bei manchen Fragen denke ich auch, dass es einfacher wäre, mal Google zu bemühen, als hier einen Thread aufzumachen. Aber nicht bei solch speziellen Fragen.
Um mal eine Seite zu nennen, die sehr hilfreich war:
odetocode.com/code/80.aspx
Hier also der Code mit schon etwas Fehlerbehandlung. Du musst Deinem Projekt einen Verweis auf "Microsoft.JScript" hinzufügen.
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: 32: 33: 34: 35:
| var jsCodeProvider = new JScriptCodeProvider(); var parameters = new CompilerParameters() { GenerateInMemory = true, GenerateExecutable = true };
string jsCode = @"function SendHallo() { return 'Hallo'; }"; var results = jsCodeProvider.CompileAssemblyFromSource(parameters, jsCode); if (results.Errors.HasErrors) { } else if (results.Errors.HasWarnings) { } else { var assembly = results.CompiledAssembly; var compiledType = assembly.GetTypes().FirstOrDefault(); if (compiledType != null) { var sendHalloMetodInfo = compiledType.GetMethod("SendHallo"); if (sendHalloMetodInfo != null) { var instance = FormatterServices.GetUninitializedObject(compiledType); string returnValue = (string)sendHalloMetodInfo.Invoke(instance, new object[] { null, null }); } } } |
Achso, die Signatur der Methode wird irgendwie geändert, wie man sieht. Aus keinem Übergabeparameter werden hier zwei (deshalb das 2x
null). Darauf muss geachtet werden.
Viel Spaß damit,