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