範例 COM 類別 (C# 程式設計手冊)
下列是一個類別範例,您會將這個類別公開為 COM 物件。將程式碼放入 .cs 檔並加入專案後,請將 [註冊 COM Interop] 屬性設定為 [True]。如需詳細資訊,請參閱 How to: Register a Component for COM Interop。
將 Visual C# 物件公開為 COM 需要宣告一個類別介面、事件介面 (如果必要時) 和類別本身。類別成員必須遵循以下規則,才可見於 COM:
類別必須是公用的
屬性、方法和事件必須是公用的
屬性和方法必須宣告於類別介面
事件必須在事件介面內宣告過
類別中其他未在此介面內宣告的公用成員將不可見於 COM,但可見於其他 .Net Framework 物件。
若要將屬性和方法公開給 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
{
}
}