Utilisez Roslyn pour évaluer dynamiquement les expressions C#
Dans des scénarios tels que la création d'applications basées sur les données ou la génération de code d'exécution, il est souvent nécessaire d'évaluer dynamiquement les expressions C#. Cet article montre comment y parvenir à l’aide de la plateforme du compilateur Microsoft Roslyn.
Utiliser l'API de script
L'API de script de Roslyn offre un moyen pratique d'évaluer des expressions et des extraits de code. Les étapes spécifiques sont les suivantes :
Installer le package NuGet : Utilisez NuGet pour ajouter le package Microsoft.CodeAnalysis.CSharp.Scripting
à votre projet.
Évaluer une expression : Utilisez la méthode CSharpScript.EvaluateAsync
pour évaluer une expression et stocker le résultat dans une variable appropriée. Par exemple :
<code class="language-csharp"> var result = CSharpScript.EvaluateAsync("1 + 3").Result;</code>
Spécifiez le type de résultat : Pour spécifier le type de l'expression évaluée, vous pouvez utiliser la méthode générique CSharpScript.EvaluateAsync<T>
. Cela garantit que le résultat est fortement typé. Par exemple :
<code class="language-csharp"> var now = CSharpScript.EvaluateAsync<string>("System.DateTime.Now.ToString()").Result;</code>
Exemple d'utilisation
L'extrait de code suivant montre comment utiliser l'API de script pour évaluer un exemple d'expression :
<code class="language-csharp">using Microsoft.CodeAnalysis.CSharp.Scripting; using Microsoft.CodeAnalysis.Scripting; // 评估 "1 + 3" var result = CSharpScript.EvaluateAsync("1 + 3").Result; Console.WriteLine(result); // 输出 4 // 评估 "System.DateTime.Now.ToString()" var now = CSharpScript.EvaluateAsync<string>("System.DateTime.Now.ToString()").Result; Console.WriteLine(now); // 输出当前日期时间</code>
Fonctionnalités avancées
L'API de script prend en charge de nombreuses fonctionnalités avancées, telles que :
Pour plus de détails, veuillez vous référer à la documentation de l'API Roslyn Script : https://www.php.cn/link/6e52547a0e7bca35975b6f1f8761e7ae
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!