Applicazione dell'attributo personalizzato per implementare IEnumerable
In .NET Framework, le interfacce contenenti enumerazioni di oggetti di un insieme devono ereditare l'interfaccia IEnumerable. IEnumerable espone un solo metodo, GetEnumerator. Le interfacce dispatch COM non gestite contengono un membro (DISPID_NEWENUM) con un DISPID (-4) speciale che indica che l'interfaccia è enumerabile. Durante l'importazione, l'attributo custom impone l'implementazione di IEnumerable a un'interfaccia COM non gestita. La sintassi di questo attributo custom è la seguente:
GUID = B64784EB-D8D4-4d9b-9ACD-0E30806426F7
Value = anything
Nota |
---|
L'attributo IEnumerable custom della libreria dei tipi può essere applicato esclusivamente a un'interfaccia solo dispatch (dispinterface) o a un'interfaccia duale.Le interfacce derivate da IUnknown non possono ereditare IEnumerable. Pertanto, se si applica l'attributo personalizzato a un'interfaccia derivata da IUnknown, l'utilità di importazione della libreria dei tipi ignorerà l'attributo. |
Esempio
Nell'esempio riportato di seguito, scritto nel linguaggio IDL (Interface Definition Language), viene illustrato l'utilizzo dell'attributo della libreria dei tipi IEnumerable custom per imporre a IMyClass di ereditare 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;
};
Il codice MSIL (Microsoft Intermediate Language) generato al termine dell'importazione della libreria dei tipi risulterà simile al seguente:
.class interface public abstract auto ansi import IMyClass
implements [mscorlib]System.Collections.IEnumerable
{
...
} // This is the end of class MyClass.
In generale, se il codice non implementa IEnumerable dopo avere analizzato MSIL, è possibile utilizzare questo attributo custom per imporre l'implementazione.
Vedere anche
Riferimenti
Tlbimp.exe (utilità di importazione della libreria dei tipi)
Concetti
Applicazione dell'attributo personalizzato per sovrascrivere il DISPID COM predefinito
Applicazione dell'attributo personalizzato per rendere con tag le proprietà COM get/set non gestite