C# をエンド ユーザーが TextBox で編集し、アプリケーションの実行中にコンパイルして、既に実行中のアプリケーションから呼び出すDSL として C# を使用することは可能ですか?
私が質問するのは、今後数か月で単純な数学演算 DSL を実装する必要があるからです ( http://rachel53461.wordpress.com/2011/08/20/the-math-converterで Rachel Lim がブログで書いたようなものに似ています)。 / XAML/Converter の側面ではなく、彼女のコードの数学処理の側面に焦点を当てています)。if ステートメントやその他の機能を追加したいので、彼女のコードをそのまま再利用することには抵抗があります。C# 自体を使用できる場合は、再実装することなくすべての機能を利用できます。
これが可能である場合、そのためにどのフレームワーク、名前空間、またはクラスを使用したいですか?
C# から派生した DSL で私が行うことの 1 つは、必要なすべての using ヘッダー ステートメントをハードコードし、知識のあるユーザーが入力したすべての using ステートメントを削除することです。これの目的は、エンド ユーザーが企業ポリシーの希望に反して、またはサイト管理者の知識なしに、C# に似た DSL を本格的なコンパイラに活用しようとする可能性を減らすことです。 私が提案した using ステートメントの管理は、ユーザーのいたずらに対する十分な防御になりますか?
最後に、これまでのすべての答えが「はい」である場合、このアプローチの欠点、特にセキュリティの脆弱性をもたらす欠点は何ですか?
ポール