COM 클래스 예제
다음 코드는 COM 개체로 노출할 클래스의 예입니다. 이 코드를 프로젝트에 추가된 .cs 파일에 배치한 후 COM Interop 등록 속성을 True로 설정합니다. 자세한 내용은 방법: 구성 요소 COM Interop 등록을 참조하세요.
C# 개체를 COM에 노출하려면 클래스 인터페이스(필요한 경우 "이벤트 인터페이스") 및 클래스 자체를 선언해야 합니다. 클래스 멤버가 COM에 표시되려면 다음 규칙을 따라야 합니다.
- 클래스는 public이어야 합니다.
- 속성, 메서드 및 이벤트는 public이어야 합니다.
- 속성 및 메서드는 클래스 인터페이스에서 선언되어야 합니다.
- 이벤트는 이벤트 인터페이스에서 선언되어야 합니다.
이러한 인터페이스에서 선언하지 않는 클래스의 다른 공용 멤버는 COM에 표시되지 않지만 다른 .NET 개체에 표시됩니다. 속성 및 메서드를 COM에 노출하려면 클래스 인터페이스에서 선언하고 DispId
특성을 사용하여 표시한 후 클래스에서 구현해야 합니다. 인터페이스에서 멤버를 선언하는 순서는 COM vtable에 사용되는 순서입니다. 클래스에서 이벤트를 노출하려면 이벤트 인터페이스에서 선언하고 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
{
}
}
참고 항목
.NET