« 「憂鬱な勇者」を F# で作ってみた | メイン | 「憂鬱な勇者」をより F# っぽく作ってみた »

CodeDom でコードを動的にコンパイルして実行する

IronPython で CSharpCodeProvider を使って、C# のコードを動的にコンパイルして実行するサンプルを作ってみた。使い捨ての C# コードをいちいちコンパイルして、ファイルとして実行ファイルを置いておくのもディスクのゴミを増やすだけかもと。まあ、結果としてゴミの削減にならなくてもサンプルとしては面白いかなと。こういうテストコードを作るのには IronPython はとても便利だ。

import sys
import clr
from System import *
from System.IO import *
from System.Reflection import *
from System.CodeDom import *
from System.CodeDom.Compiler import *
from Microsoft.CSharp import *
if len(sys.argv) > 1:
sr = StreamReader(sys.argv[1])
source = sr.ReadToEnd()

cp = CompilerParameters()
cp.GenerateInMemory = True;

provider = CSharpCodeProvider()

cr = provider.CompileAssemblyFromSource(cp, source)
errors = cr.Errors

if errors.Count == 0:
asm = cr.CompiledAssembly
types = asm.GetTypes()
for type in types:
methods = type.GetMethods()
for method in methods:
if method.IsStatic and method.IsPublic and method.Name == "Main":
method.Invoke(None, None)

else:
print "There are no filename."

このエントリーをはてなブックマークに追加 Save This Page to del.icio.us このエントリーをlivedoorクリップに追加 このエントリーをニフティクリップに追加 このエントリーをBuzzurlに追加このエントリーをBuzzurlに追加 このエントリーをFC2ブックマークへ追加 このエントリーをnewsingへ追加 このエントリーをYahoo!ブックマークに追加

トラックバック

このエントリーのトラックバックURL:
http://www.cworld2000.com/cgi-bin/mt/mt-tb.cgi/426

コメントを投稿

(いままで、ここでコメントしたことがないときは、コメントを表示する前にこのブログのオーナーの承認が必要になることがあります。承認されるまではコメントは表示されません。そのときはしばらく待ってください。)

About

2008年06月02日 21:37に投稿されたエントリーのページです。

ひとつ前の投稿は「「憂鬱な勇者」を F# で作ってみた」です。

次の投稿は「「憂鬱な勇者」をより F# っぽく作ってみた」です。

他にも多くのエントリーがあります。メインページアーカイブページも見てください。

検索

この Weblog について

Creative Commons License
このブログは、次のライセンスで保護されています。 クリエイティブ・コモンズ・ライセンス.
Powered by
Movable Type 3.35