2011-07-05 31 views
1

這不是真的用於實際使用,但有什麼方法可以在C#中執行字符串作爲程序代碼嗎?作爲字符串的程序代碼

例如:
,而不需要編寫

Console.WriteLine("blah blah blah"); 

我想寫點東西像

string s = "Console.WriteLine(\"blah blah blah\")" 
execute(s); 
+0

[動態代碼生成]的可能重複(http://stackoverflow.com/questions/1748149/dynamic-code-generation) –

回答

1

,它在C#可能,但它是故意困難。沒有簡單的「exec()」功能,您可以直接使用。

AFAIK這是由設計。 Exec的功能是巨大的安全漏洞,因爲它們將語言的全部功能暴露給通常不應該擁有這種能力的用戶。作爲程序員,您經常打算使用exec()函數來允許用戶輸入簡單的數學或字符串表達式,並且突然間有一名黑客出現並實例化一個System.Net.WebClient並使用它來下載並執行某些操作更惡意。沒有辦法限制哪些組件被允許。

.Net語言的首選替代方法是所謂的Domain Specific Language (DSL)。 DSL是一種(相對)簡單的方式來定義自己的語法(及其背後的含義),以便讓用戶可以執行什麼類型的操作,而無需爲訪問整個基類庫提供安全隱患。它還具有使您能夠提供比其他方式更高級別的專業化操作的優勢。