Использование Scripting.Dictionary из C #

2

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

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

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

В этой статье предлагается получить "сборку метаданных" у поставщика - знает ли кто-нибудь, существует ли такая сборка для Scripting.Dictionary?

Теги:
com
activex
interop

2 ответа

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 );

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

  • 4
    'scrrun.dll' известен как запись Microsoft Scripting Runtime в разделе Библиотеки типов COM.
0

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню