2009-03-13 4 views
2

C#アプリと別のアプリの間でScripting.Dictionaryを渡す必要があります。私はC#アプリケーションでインスタンスを作成して辞書を変更できるようにしたいと考えています。C#のScripting.Dictionaryの使用

一般的にScripting.DictionaryとActiveXについてはほとんど分かりません。さまざまなフォーラムでは、System.Type.GetTypeFromProgID()やSystem.Activator.CreateInstance()などの関数を使用してインスタンスを作成する必要があることが示唆されています。残念なことに、これは残りのコードに対して不透明なオブジェクトであることを意味します。

これは実際にはどうやってやろうとしているのですか、それとも良い方法がありますか?理想的には、私はコンパイル時の型をインポートし、他の型と同じように使用したいと思います。これは可能ですか?

This article私はベンダーから「メタデータアセンブリ」を取得しています。このようなアセンブリがScripting.Dictionaryに存在するかどうかは誰にもわかりますか?

答えて

4

私は最も簡単な方法を試してみた、動作しているようです:

は、Visual Studioのscrrun.dllへのCOM参照を追加します(これは[参照の追加]ダイアログの[COM]タブに表示されるはずです) Visual Studioは自動的にinteropファイルを作成します。

Scripting.Dictionary d = new Scripting.DictionaryClass(); 
d.Add(ref myKey, ref myValue); 
MyComType.Method(d); 

あなたはそれに問題がある場合、私はいくつかの例や、おそらく明確化を投稿することができます。

+3

「scrrun.dll」は、COMタイプライブラリセクションのMicrosoft Scripting Runtimeのエントリとして知られています。 – Erick

0

IDictionaryを実装し、内部ストレージ実装としてScripting.Dictionaryを使用するラッパー辞書クラスを作成します。あなたの.NETコードでラッパーを使用し、COM経由で他のアプリケーションにScripting.Dictionaryの内部を渡します。