Maison >développement back-end >C++ >Comment puis-je réaliser une évaluation de code dynamique en C # comme `EVA () 'de JavaScript?

Comment puis-je réaliser une évaluation de code dynamique en C # comme `EVA () 'de JavaScript?

Barbara Streisand
Barbara Streisandoriginal
2025-01-28 05:51:09399parcourir

How Can I Achieve Dynamic Code Evaluation in C# Like JavaScript's `eval()`?

Implémentez l'exécution de code dynamique en C #

Cet article explique comment exécuter dynamiquement le code en C #, similaire à la fonction

en JavaScript.

eval() Description du problème

Supposons que vous ayez une variable entière et plusieurs attributs appelés "Property1", "Property2", "Property3" et d'autres attributs. Selon la valeur , vous souhaitez effectuer des opérations sur l'attribut "Property

i

" correspondant. Utilisez i dans JavaScript pour terminer facilement cette tâche, mais comment l'atteindre en C #? i Solution utilisant l'API de script Roslyn eval()

L'API de script Roslyn fournit une solution pour l'évaluation du code dynamique en C #. Il contient un ensemble de classes qui vous permettent d'exécuter le code C # au moment de l'exécution.

Exemple de code

Pour évaluer les expressions simples, utilisez

Méthode:

Pour un code plus compliqué, vous pouvez utiliser la méthode

:

EvaluateAsync()

Ensuite, vous pouvez appeler
<code class="language-csharp">// 添加NuGet包 'Microsoft.CodeAnalysis.Scripting'
using Microsoft.CodeAnalysis.CSharp.Scripting;

await CSharpScript.EvaluateAsync("System.Math.Pow(2, 4)"); // 返回16</code>
continuer à exécuter le code:

RunAsync()

Cela vous permet d'exécuter dynamiquement le code C # et d'interagir avec l'objet généré.
<code class="language-csharp">var script = await CSharpScript.RunAsync(@"
class MyClass
{ 
    public void Print() => System.Console.WriteLine(1);
}");</code>

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn