Heim >Backend-Entwicklung >C++ >Wie kann ich JavaScript-Code in C# analysieren und ausführen?

Wie kann ich JavaScript-Code in C# analysieren und ausführen?

Linda Hamilton
Linda HamiltonOriginal
2024-12-31 05:33:09633Durchsuche

How to Parse and Execute JavaScript Code within C#?

So analysieren und führen Sie JS in C# aus

Der bereitgestellte C#-Code enthält eine Klasse, ScriptEngine, die als Wrapper für Windows dient COM-Komponenten der Script Engine. Es ermöglicht sowohl 32-Bit- als auch 64-Bit-Umgebungen und ermöglicht Ihnen das Parsen und Ausführen von JavaScript-Code.

Das Codebeispiel bietet verschiedene Möglichkeiten zur Interaktion mit der Skript-Engine:

Direkt Ausdrucksauswertung:

Console.WriteLine(ScriptEngine.Eval("jscript", "1+2/3"));

Dies wertet den angegebenen JavaScript-Ausdruck aus und gibt das Ergebnis aus (1.66666666666667).

Funktionsaufruf mit optionalen Argumenten:

using (ScriptEngine engine = new ScriptEngine("jscript"))
{
  ParsedScript parsed = engine.Parse("function MyFunc(x){return 1+2+x}");
  Console.WriteLine(parsed.CallMethod("MyFunc", 3));
}

Dies definiert eine JavaScript-Funktion, analysiert sie und ruft die Funktion mit dem Argument 3 auf. Drucken des Ergebnisses (6).

Funktionsaufruf mit benannten Elementen und optional Argumente:

using (ScriptEngine engine = new ScriptEngine("jscript"))
{
    ParsedScript parsed = engine.Parse("function MyFunc(x){return 1+2+x+My.Num}");
    MyItem item = new MyItem();
    item.Num = 4;
    engine.SetNamedItem("My", item);
    Console.WriteLine(parsed.CallMethod("MyFunc", 3));
}

[ComVisible(true)] // Script engines are COM components.
public class MyItem
{
    public int Num { get; set; }
}

Dieses Beispiel demonstriert die Verwendung benannter Elemente, die die Emulation/Implementierung von HTML-DOM-Elementen ermöglichen. Es legt ein benanntes Element „My“ mit einer Eigenschaft „Num“ fest, die auf 4 gesetzt ist, und ruft die Funktion mit dem Argument 3 auf, wodurch das Ergebnis (10) ausgegeben wird.

Das Beispiel zeigt auch, wie stattdessen eine CLSID verwendet wird eines Skriptsprachennamens, um die schnelle IE9-JavaScript-Engine „Chakra“ zu nutzen:

using (ScriptEngine engine = new ScriptEngine("{16d51579-a30b-4c8b-a276-0ff4dc41e755}"))
{
    // continue with chakra now
}

Der vollständige Quellcode für die ScriptEngine-Klasse und Beispielverwendungen werden als Referenz bereitgestellt. Es enthält zusätzliche Funktionen wie:

  • Abrufen und Festlegen von Eigenschaften
  • Behandlung von Skriptausnahmen
  • Hinzufügen benannter Elemente auf Stammebene zum Namensraum der Skript-Engine

Das obige ist der detaillierte Inhalt vonWie kann ich JavaScript-Code in C# analysieren und ausführen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn