Как написать библиотеку классов для OLE-автоматизации?

StackOverflow https://stackoverflow.com/questions/127440

Вопрос

У меня есть надстройка Excel, в которую я добавляю так много модулей классов, что она стала очень громоздкой.Я хочу преобразовать его в библиотеку типов или пакет COM, чтобы можно было повторно использовать его для других приложений пакета MS Office.

Я перенес надстройку в Visual Studio как проект библиотеки классов, но автоматизация Excel не распознает классы в скомпилированном DLL-файле.Интуитивно я думаю, что мне понадобится манифест, интерфейс или что-то в этом роде в моем коде.

Что мне нужно знать, чтобы предоставить методы и свойства класса для использования в OLE-автоматизации?

Это было полезно?

Решение

Я предполагаю, что, поскольку вы использовали манифест фразы, вы собираете эту DLL, используя платформу разработки .net VS2003, VS2005 или VS2008 по сравнению с VS 6.0.

Этот связь предоставляет подробный набор шагов, необходимых для регистрации сборки .NET для использования в качестве COM-компонента.

Единственное, о чем я обычно не упоминаю в статье, — это создание собственных GUID.Используйте элемент «Создать GUID» в меню «Инструменты», затем вставьте их над классами, интерфейсами и перечислениями, которые вы хотите предоставить для COM.

[Guid("3838ADC1-E901-4003-BD0C-A889A7CF25A1")]
public interface IMyCOMClass  {
    void MyMethod(); 
}

[Guid("476BDEB6-B933-4ed5-8B86-7D9330A59356"),
ClassInterface(ClassInterfaceType.None)]
public class MyCOMClass : IMyCOMClass {
    public void MyMethod() { 
        //implementation here
    }
}

Второе, что я делаю, — это использую отдельный интерфейс для COM-части, реализуемый классом.Причина этого связана с возможностью взлома COM при изменении интерфейса, например, DLL Hell.

Надеюсь, это поможет, Билл.

Другие советы

(Предполагая, что это проект .NET)

Помимо добавления Guids в ваши интерфейсы и классы, вам также необходимо пометить их атрибутом ComVisible (если вы не пометили им всю сборку).Кроме того, вам необходимо использовать tlbexp.exe для экспорта метаданных в виде библиотеки типов COM для ссылок в неуправляемых клиентах.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top