私は現在いくつかのコードを書いており、アプリケーションからC#コードを実行することが可能かどうかは疑問です。私はあなたにアイデアを与えます、私は、ユーザーにテキストボックスを与え、コードを入力して行こうとしていると言いましょう。彼らは果物のリストを求めて、各果物を通ってそれを出力します。例:アプリケーション内でC#を解析/実行できる方法はありますか?スクリプトとほとんど同じですか?
var fruitList = getFruit();
foreach(var fruit in fruitList)
{
print(fruit.Name);
}
私は、パーサーは、私はC#で書かれてきた方法にgetFruitを()タイアップすることができるはずです、これを通過し、fruitListにフルーツオブジェクトのリストを割り当てることができるようにしたいと思いますコード。同じことが印刷物にも当てはまります。これは、これをテキストボックスに出力するために書いた印刷機能と同じにする必要があります。
今私はC#がスクリプトではなく、コンパイルされていると知っていますが、私はグーグルで多くのことをしていますが、実際には何も見つかりません。私にとって唯一の選択肢は、少し楽しいと思う小さな言語パーサを自分で書くことですが、これまでにやったことは難しいことです。ですから、これは私が長年に渡る前にいくつかの解決策が存在するかどうかを確認するための予備チェックです。
私の仲間のプログラマー、私を助けることができるかもしれないことは何か知っていますか?
問題がなければ、このアドバイス、アドバイス、このhttp://blogs.msdn.com/b/ericwhite/archive/2010/06/29/writing-a-recursive-descent-parser-using-c-and-linq.aspxなどの記事へのリンクか解決方法など、フィードバックすべてに感謝します。
よろしく、
アダム
編集:私は、実施例を得るために管理しています。私がテストアプリケーションに他のコードを貼り付けたので、このコードはちょっと面倒ですが、動作します。基本的には、コードをDLLにコンパイルした後、DLLをロードし、型を見つけ、メソッドを見つけて呼び出します。あまりにも速いですね!完全なコードは以下の通りですので、私はあなたをスパムしたくない:
http://imdsm.blogspot.com/2012/01/compile-c-into-assembly-then-load-it.html
は、ここに掲載皆に感謝します。あなたはちょうど私に混乱の日を救った!
コードの残りの部分を生成してコンパイルに追加しない限り、それが正しい解決策であるとは必ずしも分かりませんが、それでも実行時間について心配しています。しかし、リンクのおかげで! –
CSharpCodeProviderは非常に高速になります。これは、コンパイルのコストが1回しか発生しないためです。一度ロードされると、IronRubyもうまくいくはずですが、それはスクリプト環境全体です。これらの言語のスクリプトの通常のランタイムを取得します。 –