在C#中實現動態代碼執行
本文探討如何在C#中動態執行代碼,類似於JavaScript中eval()
的功能。
問題描述
假設你有一個整數變量i
和多個名為“Property1”、“Property2”、“Property3”等的屬性。根據i
的值,你希望對相應的“Propertyi”屬性執行操作。在JavaScript中使用eval()
可以輕鬆完成此任務,但在C#中如何實現呢?
使用Roslyn腳本API的解決方案
Roslyn腳本API提供了一種在C#中進行動態代碼評估的解決方案。它包含一組類,允許你在運行時執行C#代碼。
示例代碼
要評估簡單的表達式,請使用EvaluateAsync()
方法:
// 添加NuGet包 'Microsoft.CodeAnalysis.Scripting' using Microsoft.CodeAnalysis.CSharp.Scripting; await CSharpScript.EvaluateAsync("System.Math.Pow(2, 4)"); // 返回16
對於更複雜的代碼,可以使用RunAsync()
方法:
var script = await CSharpScript.RunAsync(@" class MyClass { public void Print() => System.Console.WriteLine(1); }");
然後,你可以通過調用ContinueWithAsync()
繼續執行代碼:
await script.ContinueWithAsync("new MyClass().Print();");
這允許你動態地執行C#代碼並與生成的對象進行交互。
以上是如何在c#中獲得動態代碼評估,例如javaScript的`eval()'?的詳細內容。更多資訊請關注PHP中文網其他相關文章!