このチュートリアルでは、
C# 4.0
と
Visual Basic 10.0
の新しい機能である
Dynamic
によって、ホスト言語で動的ディスパッチが提供されることを予想したオブジェクトモデルの自然な使用がどのように実現されるかについて説明します。この機能のデモは、
Python
言語用に記述されたライブラリにアクセスする
IronPython
シナリオ
に従ってい
ます。独自のスクリプトをホストし、アプリケーションのオブジェクトモデルにアクセスする高度な
IronPython
シナリオは、このチュートリアルでは扱いません。
注
:
-
Office
の使用は、プログラミングのチュートリアルに含まれています。
-
Silverlight
Visual Studio
2010
の今後のプレビューリリースで紹介されます。
前提条件
:
この
IronPython
シナリオでは、次のリソースを使用します。
IronPython
シナリオ
このチュートリアルでは、
IronPython
ライブラリに
C#
からアクセスする方法を示します。
IronPython
相互運用プロジェクトをセットアップするには
1.
Visual Studio 2010
を起動し、新しい
C#
コンソールアプリケーションを作成します。
2.
IronPython.dll
、
IronPython.Modules.dll
、および
Microsoft.Scripting.dll
への
参照を追加します
(
これらのファイルは、すべて
.NET
4.0 Beta 1
フォルダの
%PROGRAMFILES%\IronPython
2.6 CTP
に
あり
ます
)
。
3.
Python Lib
フォルダをプロジェクトの
bin\Debug
フォルダにコピーします
(
たとえば、
.NET
4.0 Beta 1\Lib
フォルダの
%PROGRAMFILES%\IronPython
2.6 CTP
を
C:\IronPythonProject\bin\Debug
フォルダにコピーします
)
。
4. 次の
using
ステートメントを
Program.cs/Module1.vb
ファイルの先頭に追加します。
using
IronPython.Hosting;
using
Microsoft.Scripting.Hosting;
Imports
IronPython.Hosting
Imports
Microsoft.Scripting.Hosting
C#/VB
の
IronPython
モジュールをインポートするには
5. ホストされる
IronPython
環境を表す新しい
ScriptRuntime
を作成するコードを追加します。この
ScriptRuntime
を使用して
Python
コードを読み込むことができます。ここでは、
shuffle
関数を含むライブラリモジュール
random
を読み込みます。
次のコードを
Main
メソッドに追加します。
Console.WriteLine("Loading random.py...");
ScriptRuntime py = Python.CreateRuntime();
dynamic random = py.UseFile("random.py");
Console.WriteLine("random.py loaded!");
var items = Enumerable.Range(1, 7).ToArray();
Console.WriteLine("Loading random.py...")
Dim py As ScriptRuntime = Python.CreateRuntime()
Dim random As Object = py.UseFile("random.py")
Console.WriteLine("random.py loaded!")
Dim items = Enumerable.Range(1, 7).ToArray()
6. 次のコードを
Main
メソッドの末尾に追加します。このコードは、
items
配列のランダムな順序を生成する
shuffle
関数を繰り返し呼び出します。
for (int s =
0; s < 10000; s++)
{
random.shuffle(items);
Console.Write("Sequence
{0}: ", s);
foreach (int i
in items)
{
Console.Write("{0} ", i);
}
Console.WriteLine();
}
For s As Integer = 1 To 10000
random.shuffle(items)
Console.Write("Sequence {0}: ", s)
For Each i In items
Console.Write("{0} ", i)
Next
Console.WriteLine()
Next
7. アプリケーションをビルドして実行します。
Python
の
random
モジュールが
1
~
7
の数値をランダムな順序で
10,000
回繰り返しシャッフルします。
Python
ランタイムの初回の初期化時に起動コストが発生しますが、以降のループの反復は非常に高速で実行されます。