C#中的動態代碼執行
與JavaScript中的eval()
函數類似,C#可以使用Roslyn腳本API實現動態代碼執行。此API允許您在運行時動態編譯和執行C#代碼。
示例:
假設您有一個整數變量i
和多個名為“Property1”、“Property2”、“Property3”等的屬性。您希望根據i
的值對“Propertyi”屬性執行操作。
使用Roslyn腳本API的解決方案:
<code class="language-csharp">// 添加NuGet包 'Microsoft.CodeAnalysis.Scripting' using Microsoft.CodeAnalysis.CSharp.Scripting; await CSharpScript.EvaluateAsync($"System.Reflection.Assembly.LoadFrom(\"{new FileInfo(\"your-assembly-to-load.dll\").FullName}\")"); await CSharpScript.RunAsync($"var propertyValue = typeof(YourType).GetProperty(\"Property{i}\").GetValue(yourTypeInstance);");</code>
此示例動態加載程序集並根據i
的值訪問屬性。
其他功能:
Roslyn腳本API允許您執行任何C#代碼片段:
<code class="language-csharp">await CSharpScript.RunAsync(@" class MyClass { public void Print() => System.Console.WriteLine(1); }");</code>
您還可以引用先前編譯的代碼:
<code class="language-csharp">await script.ContinueWithAsync("new MyClass().Print();");</code>
以上是如何在c#(例如JavaScript的eval()()中實現動態代碼執行?的詳細內容。更多資訊請關注PHP中文網其他相關文章!