2009-03-13 5 views
2

Мне нужно передать Scripting.Dictionary между моим приложением C# и другим приложением. Я хотел бы иметь возможность создавать экземпляры и изменять словарь в моем приложении C#.Использование Scripting.Dictionary с C#

Я мало знаю о Scripting.Dictionary и ActiveX в целом. Различные форумы предполагают, что я должен использовать такие функции, как System.Type.GetTypeFromProgID() и System.Activator.CreateInstance(), чтобы создать экземпляр. К сожалению, это означает, что это непрозрачный объект для остальной части моего кода.

Действительно ли это так, как это должно быть сделано или есть лучший способ? В идеале я хотел бы импортировать тип времени компиляции и просто использовать его, как и любой другой тип. Это возможно?

This article предлагает получить «сборку метаданных» у поставщика - знает ли кто-нибудь, существует ли такая сборка для Scripting.Dictionary?

ответ

4

Я просто попытался простой подход, и это похоже на работу:

Добавить COM ссылку на scrrun.dll в Visual Studio (она должна отображаться на вкладке COM диалогового окна Добавление ссылки) , а Visual Studio автоматически создаст для вас файлы interop. Вы можете написать код так:

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

Если у вас есть какие-либо проблемы с этим, я могу опубликовать еще несколько примеров, или, возможно, разъяснения.

+3

«scrrun.dll» известен как запись Microsoft Scripting Runtime в разделе «Библиотеки COM-типа». – Erick

0

Создайте класс словаря обертки, который реализует IDictionary и который использует Scripting.Dictionary как внутреннюю реализацию хранилища. Используйте оболочку в коде .NET и передайте внутренний скрипт.Dictionary через COM в другое приложение.

Смежные вопросы