範例 COM 類別

下列程式碼是公開為 COM 物件類別的範例。 在您將此程式碼放入新增至專案的 .cs 檔案之後,請將 Register for COM Interop 屬性設定為 True。 如需詳細資訊,請參閱如何:註冊 COM Interop 元件

將 C# 物件公開給 COM 需要宣告類別介面和類別本身,以及事件介面 (若需要)。 類別成員必須遵守下列規則才能為 COM 所見︰

  • 類別必須是公用的。
  • 屬性、方法及事件必須是公用的。
  • 必須在類別介面上宣告屬性和方法。
  • 必須在事件介面中宣告事件。

您未在這些介面中宣告類別的其他 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
    {
    }
}

另請參閱