2009-03-13 6 views
2

Ich muss ein Scripting.Dictionary zwischen meiner C# -App und einer anderen App übergeben. Ich möchte Instanzen des Wörterbuchs in meiner C# -App erstellen und ändern können.Verwenden von Scripting.Dictionary aus C#

Ich weiß wenig über Scripting.Dictionary und ActiveX im Allgemeinen. Verschiedene Foren schlagen vor, dass ich Funktionen wie System.Type.GetTypeFromProgID() und System.Activator.CreateInstance() verwenden sollte, um eine Instanz zu erstellen. Leider bedeutet dies, dass es ein undurchsichtiges Objekt für den Rest meines Codes ist.

Soll das wirklich so sein oder gibt es einen besseren Weg? Idealerweise möchte ich einen Kompilierzeittyp importieren und ihn wie jeden anderen Typ verwenden. Ist das möglich?

This article schlägt vor, eine "Metadaten-Assembly" vom Hersteller zu erhalten - weiß jemand, ob eine solche Assembly für Scripting.Dictionary existiert?

Antwort

4

Ich habe gerade die einfachste Ansatz versucht, und es scheint zu funktionieren:

einen COM-Verweis auf die scrrun.dll in Visual Studio hinzufügen (in der Registerkarte COM des Verweise hinzufügen Dialog zeigen sollte) und Visual Studio erstellt automatisch die Interop-Dateien für Sie. Anschließend können Sie Code wie folgt schreiben:

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

Wenn Sie Probleme damit haben, kann ich einige weitere Beispiele veröffentlichen, oder vielleicht eine Klarstellung.

+3

"scrrun.dll" ist als Eintrag von Microsoft Scripting Runtime im Abschnitt COM-Typbibliotheken bekannt. – Erick

0

Erstellen Sie eine Wrapper-Dictionary-Klasse, die IDictionary implementiert und Scripting.Dictionary als interne Speicherimplementierung verwendet. Verwenden Sie den Wrapper in Ihrem .NET-Code und übergeben Sie das innere Scripting.Dictionary über COM an die andere App.