Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Следующий код является примером класса, который будет предоставляться в виде COM-объекта. После размещения этого кода в .cs-файле, добавленном в проект, задайте для свойства Register for COM Interop значение True. Дополнительные сведения см. в разделе Практическое руководство. Регистрация компонента для COM-взаимодействия.
Предоставление объектов C# com требует объявления интерфейса класса, интерфейса событий при необходимости и самого класса. Члены класса должны соответствовать указанным ниже правилам, чтобы стать доступными для COM.
- Класс должен быть открытым.
- Свойства, методы и события должны быть открытыми.
- Свойства и методы должны быть объявлены в интерфейсе класса.
- События должны быть объявлены в интерфейсе событий.
Другие общедоступные члены класса, которые не объявляются в этих интерфейсах, не видны COM, но они видны другим объектам .NET. Чтобы предоставить свойства и методы COM, их необходимо объявить в интерфейсе класса, пометить атрибутом DispId и реализовать в классе. Порядок объявления элементов в интерфейсе — это порядок, используемый для vtable COM. Чтобы предоставить события из класса, их необходимо объявить в интерфейсе событий и пометить атрибутом DispId. Класс не должен реализовывать этот интерфейс.
Класс реализует интерфейс класса; он может реализовать несколько интерфейсов, но первая реализация — это интерфейс класса по умолчанию. Реализуйте методы и свойства, доступные модели COM здесь. Они должны быть общедоступными и должны соответствовать объявлениям в интерфейсе класса. Кроме того, объявите здесь события, инициируемые классом. Они должны быть общедоступными и должны соответствовать объявлениям в интерфейсе событий.
Пример
using System.Runtime.InteropServices;
namespace project_name
{
[Guid("EAA4976A-45C3-4BC5-BC0B-E474F4C3C83F")]
public interface ComClass1Interface
{
}
[Guid("7BD20046-DF8C-44A6-8F6B-687FAA26FA71"),
InterfaceType(ComInterfaceType.InterfaceIsIDispatch)]
public interface ComClass1Events
{
}
[Guid("0D53A3E8-E51A-49C7-944E-E72A2064F938"),
ClassInterface(ClassInterfaceType.None),
ComSourceInterfaces(typeof(ComClass1Events))]
public class ComClass1 : ComClass1Interface
{
}
}