Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
String als Code ausführen
Jack_AI
myCSharp.de - Member



Dabei seit:
Beiträge: 193
Herkunft: Erlangen

Themenstarter:

String als Code ausführen

beantworten | zitieren | melden

Hallo.

Mich (Anfänger) würde interessieren, ob es eine Funktion gibt, die einen String als Code ausführt.

Beispiel:
string code = "Console.WriteLine(\"Das ist ein Test\")";
Irgendeinefunktion(code);

-> Ausgabe: Das ist ein Test

Danke im Voraus für die Hilfe,
Jack_AI
private Nachricht | Beiträge des Benutzers
NeuroCoder
myCSharp.de - Member



Dabei seit:
Beiträge: 335
Herkunft: NRW

beantworten | zitieren | melden

Hi!

Anders als in z.B. Javascript ist das in C# nicht so einfach möglich, da C#-Code nicht interpretiert wird.
Dein C#-Code wird vom Compiler in MSIL-Code kompiliert, der dann von der .NET-Runtime ausgeführt wird. Das hat als Konsequenz, dass du keinen Code ausführen kannst, den du nicht in deinen Code-Dateien stehen hast (jedenfalls nicht ohne weiteres).

Als Lösung kannst Du folgendes versuchen: Wandle den String in ein vollständiges C#-Programm (mit Main-Funktion usw.) und benutze den C#-Compiler um den Code zur Laufzeit zu kompilieren. Das Kompilat kannst Du dann direkt aus dem Speicher in einer Sandbox von der Runtime ausführen lassen.

Mfg NeuroCoder
private Nachricht | Beiträge des Benutzers
progger
myCSharp.de - Member

Avatar #avatar-2094.gif


Dabei seit:
Beiträge: 1.271
Herkunft: Nähe von München

beantworten | zitieren | melden

Hallo Jack_AI,

Dieses Thema wurde schon häufiger behandelt, nutze also bitte die Suchfunktion und poste deine besten Ergebnisse hier.
Schau auch mal Formel parsen an, das ist mir jetzt spontan eingefallen, weil mir das mal weitergeholfen hatte, als ich dieses Problem hatte.

Gruß,
Thomas
A wise man can learn more from a foolish question than a fool can learn from a wise answer!
Bruce Lee

Populanten von Domizilen mit fragiler, transparenter Außenstruktur sollten sich von der Translation von gegen Deformierung resistenter Materie distanzieren!
Wer im Glashaus sitzt, sollte nicht mit Steinen werfen.
private Nachricht | Beiträge des Benutzers
dr4g0n76
myCSharp.de - Experte

Avatar #avatar-1768.jpg


Dabei seit:
Beiträge: 2.908
Herkunft: Deutschland

beantworten | zitieren | melden

z.B. ist auch

Formeleditor

eine gute Möglichkeit oder suche im Forum nach C# Script.
Seit der Erkenntnis, dass der Mensch eine Nachricht ist, erweist sich seine körperliche Existenzform als überflüssig.
private Nachricht | Beiträge des Benutzers
generalpd
myCSharp.de - Member



Dabei seit:
Beiträge: 18
Herkunft: Stolberg (Rhld.)

beantworten | zitieren | melden

C# Script findest Du hier: http://www.members.optusnet.com.au/~olegshilo/CurrentRelease.html

Lade Dir den Quelltext und die Doku herunter und füge Deinem Projekt folgende Dateien hinzu:

AsmHelper.cs
AssemblyExecutor.cs
AssemblyResolver.cs
csparser.cs
csscript.cs
fileparser.cs
GACHelper.cs
CSScriptLib.cs

Jetzt Kannst Du folgendermassen Code als String ausführen:


// skript ausführen mit DEBUG-Informationen und ohne eine Datei zu erstellen
System.Reflection.Assembly asm = CSScript.LoadCode (strSourceCode, null, true);

// statische Methode im Quelltext ausführen
CSScriptLibrary.AsmHelper asmHelper = new AsmHelper(asm);
asmHelper.Invoke("DerNamespaceInDemSichDieMethodeBefindet.DieStatischeMethode", new object[] { /* liste der parameter, die der methode übergeben werden */ };


Das wars eigentlich :-)
Dieser Beitrag wurde 2 mal editiert, zum letzten Mal von generalpd am .
Es gibt keinen Löffel!
private Nachricht | Beiträge des Benutzers
Jack_AI
myCSharp.de - Member



Dabei seit:
Beiträge: 193
Herkunft: Erlangen

Themenstarter:

beantworten | zitieren | melden

Danke für alle Antworten!

Ich habe schon befürchtet, dass es durch die Umwandlung in MSIL-Code nicht möglich sein würde.

Was ich aber nicht verstanden habe, ist die Geschichte mit C#-Script. Kann mir vielleicht jemand etwas zu diesem C#-Script sagen? Ich habe mir zwar die Website von C#-Script und kurz die Dokumentation angeschaut, habe aber die Befürchtung, dass C#-Script einige wichtige Eigenschaften von C# beschränken wird (Stichwort "Annäherung zu einer Skriptsprache"). ...ist allerdings nur meine erste Assoziation.

Jack_AI
private Nachricht | Beiträge des Benutzers