Aplicar o atributo personalizado para implementar IEnumerable
No.NET Framework, interfaces de enumerar os objetos de uma coleção devem herdar de IEnumerable interface. IEnumerable expõe um método, GetEnumerator. Interfaces de despacho COM não gerenciados contém um membro (DISPID_NEWENUM) com um DISPID especial (-4) para indicar que a interface é enumerable. Após a importação, o personalizado atributo força uma interface de COM não gerenciada para implementar IEnumerable. A sintaxe personalizado atributo é o seguinte:
GUID = B64784EB-D8D4-4d9b-9ACD-0E30806426F7
Value = anything
Observação
Você pode aplicar o IEnumerable personalizado atributo de biblioteca de tipo somente para uma interface de despacho somente (dispinterface) ou duplo.Interfaces derivada de IUnknown não pode herdar IEnumerable; Portanto, se você aplicar o personalizado de atributo para uma interface derivada de IUnknown, o importador da biblioteca ignora o atributo.
Exemplo
O exemplo a seguir, escrito na linguagem de definição de Interface (IDL) mostra o uso da IEnumerable personalizado atributo de biblioteca de tipo para forçar a IMyClass para herdar 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;
};
O resultante MSIL Microsoft Intermediate Language () após a importação de biblioteca de tipos seria semelhante à seguinte:
.class interface public abstract auto ansi import IMyClass
implements [mscorlib]System.Collections.IEnumerable
{
...
} // This is the end of class MyClass.
Em geral, se seu código não implementa IEnumerable depois de examinar o MSIL, você pode usar esse personalizado atributo para forçar a implementação.
Consulte também
Referência
Tlbimp. exe (importador da biblioteca)
Conceitos
Aplicar o atributo personalizado para substituir o identificador padrão despacho de COM (DISPID)
Aplicar o atributo personalizado para obter COM não gerenciado do Tag/definir propriedades