範例 COM 類別 (C# 程式設計手冊)
下列是一個類別範例,您會將這個類別公開為 COM 物件。 將程式碼放入 .cs 檔並加入專案後,請將 [註冊 COM Interop] 屬性設定為 [True]。 如需詳細資訊,請參閱HOW TO:註冊 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
{
}
}