Compartir a través de


Aplicar el atributo personalizado para implementar IEnumerable

En .NET Framework, las interfaces que enumeran los objetos en una colección deben heredar la interfaz IEnumerable. IEnumerable expone un método, GetEnumerator. Las interfaces de distribución COM no administradas contienen un miembro (DISPID_NEWENUM) con un DISPID especial (-4) para indicar que la interfaz es enumerable. El atributo custom obliga a una interfaz COM no administrada a implementar IEnumerable durante la importación. La sintaxis de este atributo custom es la siguiente:

GUID = B64784EB-D8D4-4d9b-9ACD-0E30806426F7
Value = anything
NotaNota

Sólo puede aplicar el atributo de biblioteca de tipos IEnumerable custom a una interfaz sólo de envío (dispinterface) o a una interfaz dual.Las interfaces derivadas de IUnknown no pueden heredar IEnumerable; por consiguiente, si aplica el atributo custom a una interfaz derivada de IUnknown, el importador de la biblioteca de tipos omite el atributo.

Ejemplo

El ejemplo siguiente, escrito en el Lenguaje de definición de interfaz (IDL), muestra el uso del atributo de biblioteca de tipos IEnumerable custom para obligar a IMyClass a heredar 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;
};

El Lenguaje intermedio de Microsoft (MSIL) resultante después de importar la biblioteca de tipos sería similar al siguiente:

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

En general, si su código no implementa IEnumerable después de examinar el MSIL, puede utilizar este atributo custom para forzar la implementación.

Vea también

Referencia

TypeLibConverter

ITypeLibConverter

TlbImp.exe (Importador de la biblioteca de tipos)

Conceptos

Aplicar el atributo personalizado para sobrescribir el identificador de envío (DISPID) de COM predeterminado

Aplicar el atributo personalizado para etiquetar propiedades Get/Set de COM no administradas

Importar una biblioteca de tipos como un ensamblado