共用方式為


範例 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
    {
    }
}

請參閱

參考

互通性 (C# 程式設計手冊)

專案設計工具、建置頁 (C#)

概念

C# 程式設計手冊