是否可以將C#用作DSL,其中C#源代碼由最終用戶在TextBox中編輯,在應用程序運行時編譯,然後由已運行的應用程序調用?使用C#作爲我的DSL - 這是可能的,如果是這樣,怎麼辦?
我問,因爲在接下來的幾個月中,我將需要實現一個簡單的數學運算DSL(類似的財產以後雷切爾林的博客上講述在http://rachel53461.wordpress.com/2011/08/20/the-math-converter/ 我專注於她的代碼的數學處理方面,而不是XAML/Converter方面)。我會傾向於重複使用她的代碼,因爲我想添加if語句和其他可能的功能。如果我可以自己使用C#,那麼我可以獲得所有功能,而無需重新實現它們。
如果可以做到這一點,我想用什麼樣的框架或命名空間或類來實現這一目標?
請注意,我會用C#衍生的DSL做的一件事是使用頭語句硬編碼所有必需的,然後刪除由精明用戶輸入的所有使用語句。這樣做的目的是爲了減少最終用戶試圖將我的C#類DSL用於滿足其企業策略願望或不需要站點管理員知識的全面編譯器的前景。 我建議如何使用陳述來防止用戶惡作劇?
最後,如果到此爲止的所有答案都是「是」,那麼這種方法的缺點是什麼,尤其是引入安全漏洞的缺點?
保羅
爲什麼不使用這個腳本語言? Python例如已經有了.NET支持。 –
http://stackoverflow.com/questions/3188882/compile-and-run-dynamic-code-without-generating-exe – Chris
@克里斯克里斯,它看起來像你的建議,http://stackoverflow.com/questions/3188882/compile-and-run-dynamic-code-without-generating-exe是我的問題的答案(至少是第一個)。但我不能接受它(今晚晚些時候),除非你讓它成爲答案。 – philologon