我有這個字符串中的XML文件:執行字符串和檢索結果
DateTime.ParseExact("21/06/1980", "dd/MM/yyyy",
System.Globalization.CultureInfo.GetCultureInfo("fr-fr"))
我想讀取xml,執行這個字符串並檢索結果。
你有什麼想法來執行和檢索結果嗎?
我有這個字符串中的XML文件:執行字符串和檢索結果
DateTime.ParseExact("21/06/1980", "dd/MM/yyyy",
System.Globalization.CultureInfo.GetCultureInfo("fr-fr"))
我想讀取xml,執行這個字符串並檢索結果。
你有什麼想法來執行和檢索結果嗎?
C#和.NET框架都沒有提供任何類型的字符串代碼評估。如果你可以保證字符串的格式(換句話說,你可以保證字符串將用三個參數來描述一個靜態方法調用),你可以解析出類型,方法和參數,並用反射來調用它們。
你能描述一個更普遍的問題嗎?也許有更好的方法。
C#沒有這樣的功能。但是你可以嘗試在運行時編譯一個DLL,加載它並執行它。
This論壇有這樣一個例子。基本思想是使用CodeDom
。
當你的應用程序被編譯時,你的代碼就變成了MSIL,這就是在.NET Framework上運行的東西。
你要求的是在運行時編譯任意C#代碼,然後執行它。
有幾種可能的方法,但它們都不是特別容易。
最容易的是,如果您可以依賴於.NET SDK在您運行的環境中存在。如果是這樣,那麼你可以調用CSharp編譯器(csc),生成一個DLL,然後加載它。
但是,要小心 - 這個生成的代碼將擁有與您自己的代碼相同的權利和能力。
此外,您可能會碰到在同一應用程序域中多次加載相同程序集名稱的問題。