Использование Scripting.Dictionary из C # - PullRequest
2 голосов
/ 13 марта 2009

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

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

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

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

Ответы [ 2 ]

5 голосов
/ 16 марта 2009

Я только что попробовал самый простой подход, и, похоже, он работает:

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

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

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

0 голосов
/ 13 марта 2009

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

...