تطبيق cusإلىm سمة إلى تنفيذ IEnumerable

في إطار عمل.NET، الواجهات التي تعداد الكائنات في مجموعة يجب بوراثة الواجهة IEnumerable. IEnumerableالكشف عن أسلوب واحد، GetEnumerator. واجهات dهوpatch COM غير المدار يتضمن عضو (DهوPID_NEWENUM) مع DهوPID خاص (-4) للإشارة إلى أن الواجهة هو قابل للتعداد. Upon استيراد, the مخصص سمة forces an unmanaged COM interface إلى implement IEnumerable. The بناء الجملة of this مخصص سمة هو كـ follows:

GUID = B64784EB-D8D4-4d9b-9ACD-0E30806426F7
Value = anything
ملاحظةملاحظة

يمكنك يطبق IEnumerable cusإلىm نوع المكتبة السمة فقط إلى واجهة الإرسال فقط (dispinterface) أو واجهة مزدوجة.الواجهات derived من IUnknown cannot يورث IEnumerable; therefore, if you يطبق the مخصص سمة إلى an interface derived من IUnknown, the نوع library importer ignores the سمة.

المثال

The following example, written in the Interface Definition language (IDL), shows the use of the IEnumerable custom type library attribute to force IMyClass to inherit 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 Office 2010 Suite المتوسطة لغة (MSIL) بعد الاستيراد نوع مكتبة تبدو مشابهة لما يلي:

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

بشكل عام، إذا لا تستخدم تعليمات برمجية IEnumerable بعد فحص MSIL، يمكنك استخدام هذه السمة cusإلىm إلى فرض التطبيق.

راجع أيضًا:

المرجع

TypeLibConverter

ITypeLibConverter

Tlbimp.exe (مستورد مكتبة الأنواع)

المبادئ

تطبيق cusإلىm سمة إلى الكتابة فوق معرّف الإرسال COM الافتراضية (DISPID)

تطبيق cusإلىm سمة مدارة علامة إلى COM Get/تعيين خصائص

استيراد مكتبة نوع كتجميع