共用方式為


套用自訂屬性以實作 IEnumerable

在 .NET Framework 中,於集合中列舉物件的介面必須繼承 IEnumerable 介面。 IEnumerable 會公開 (Expose) GetEnumerator 方法。 Unmanaged COM 分派介面 (Dispatch Interface) 包含具特殊 DISPID (-4) 的成員 (DISPID_NEWENUM),代表這是可列舉的介面。 在匯入時,custom 屬性 (Attribute) 會強制 Unmanaged COM 介面實作 IEnumerable。 這個 custom 屬性的語法如下:

GUID = B64784EB-D8D4-4d9b-9ACD-0E30806426F7
Value = anything
注意事項注意事項

您可以將 IEnumerable custom 型別程式庫屬性僅套用至分派介面 (Dispinterface) 或雙重介面 (Dual Interface)。衍生自 IUnknown 的介面無法繼承 IEnumerable;因此,如果您將 custom 屬性套用至衍生自 IUnknown 的介面,型別程式庫匯入工具會忽略此屬性。

範例

下列範例以介面定義語言 (IDL) 寫成,顯示使用 IEnumerable custom 型別程式庫屬性強制 IMyClass 繼承 IEnumerable

[
   object,
   uuid(40E86021-CAD7-493B-BF09-43811D821BA7),
   dual,
   helpstring("IMyClass Interface"),
   pointer_default(unique),
   // Use the IEnumerable custom attribute.
   custom(B64784EB-D8D4-4d9b-9ACD-0E30806426F7,"")
]
interface IMyClass : IDispatch
{
};

[
   uuid(3ACBCEB2-9D52-46FA-97E0-063310CFD776),
   helpstring("MyClass Class")
]
coclass MyClass
{
   [default] interface IMyClass;
};

匯入型別程式庫所產生的 Microsoft Intermediate Language (MSIL) 看起來會像下列範例:

.class interface public abstract auto ansi import IMyClass
implements [mscorlib]System.Collections.IEnumerable 
{
...
} // This is the end of class MyClass.

一般而言,如果您的程式碼未在檢查 MSIL 後實作 IEnumerable,可以使用此 custom 屬性強制實作。

請參閱

參考

TypeLibConverter

ITypeLibConverter

Tlbimp.exe (型別程式庫匯入工具)

概念

套用自訂屬性以覆寫預設 COM 分派識別項 (DISPID)

套用自訂屬性以標記 Unmanaged COM Get/Set 屬性

匯入型別程式庫做為組件