Applicazione di attributi di interoperabilitàApplying Interop Attributes

Lo spazio dei nomi System.Runtime.InteropServices offre tre categorie di attributi specifici per l'interoperabilità: quelli applicati manualmente in fase di progettazione, quelli applicati dalle API e dagli strumenti di interoperabilità COM durante il processo di conversione e quelli applicati nell'uno o nell'altro modo.The System.Runtime.InteropServices namespace provides three categories of interop-specific attributes: those applied by you at design time, those applied by COM interop tools and APIs during the conversion process, and those applied either by you or COM interop.

Per informazioni su come applicare gli attributi nel codice gestito, vedere Estensione di metadati mediante attributi.If you are unfamiliar with the task of applying attributes to managed code, see Extending Metadata Using Attributes. Come per altri attributi personalizzati, è possibile applicare gli attributi specifici per l'interoperabilità a tipi, metodi, proprietà, parametri, campi e altri membri.Like other custom attributes, you can apply interop-specific attributes to types, methods, properties, parameters, fields, and other members.

Attributi della fase di progettazioneDesign-Time Attributes

È possibile intervenire sul risultato del processo di conversione eseguito dalle API e dagli strumenti di interoperabilità COM usando gli attributi in fase di progettazione.You can adjust the outcome of the conversion process performed by COM interop tools and APIs by using design-time attributes. La tabella seguente descrive gli attributi che è possibile applicare al codice sorgente gestito.The following table describes the attributes that you can apply to your managed source code. Questi attributi possono essere applicati, in alcuni casi, anche dagli strumenti di interoperabilità COM.COM interop tools, on occasion, might also apply the attributes described in this table.

AttributoAttribute DescriptionDescription
AutomationProxyAttribute Specifica se il marshalling del tipo deve essere effettuato mediante il gestore di marshalling di Automazione oppure un proxy e uno stub personalizzati.Specifies whether the type should be marshaled using the Automation marshaler or a custom proxy and stub.
ClassInterfaceAttribute Controlla il tipo di interfaccia generato per una classe.Controls the type of interface generated for a class.
CoClassAttribute Identifica il CLSID della coclasse originale importata da una libreria dei tipi.Identifies the CLSID of the original coclass imported from a type library.

Questo attributo viene in genere applicato dagli strumenti di interoperabilità COM.COM interop tools typically apply this attribute.
ComImportAttribute Indica che è stata importata una definizione di interfaccia o una coclasse da una libreria dei tipi COM.Indicates that a coclass or interface definition was imported from a COM type library. Il runtime usa questo flag per determinare come attivare il tipo ed effettuarne il marshalling.The runtime uses this flag to know how to activate and marshal the type. Questo attributo impedisce la riesportazione del tipo in una libreria dei tipi.This attribute prohibits the type from being exported back to a type library.

Questo attributo viene in genere applicato dagli strumenti di interoperabilità COM.COM interop tools typically apply this attribute.
ComRegisterFunctionAttribute Indica che, quando l'assembly viene registrato per l'utilizzo da COM, deve essere chiamato un metodo per consentire l'esecuzione di codice utente durante il processo di registrazione.Indicates that a method should be called when the assembly is registered for use from COM, so that user-written code can be executed during the registration process.
ComSourceInterfacesAttribute Identifica le interfacce che sono fonti di eventi per la classe.Identifies interfaces that are sources of events for the class.

Questo attributo può essere applicato dagli strumenti di interoperabilità COM.COM interop tools can apply this attribute.
ComUnregisterFunctionAttribute Indica che, quando la registrazione dell'assembly da COM viene annullata, deve essere chiamato un metodo per consentire l'esecuzione di codice utente durante il processo.Indicates that a method should be called when the assembly is unregistered from COM, so that user-written code can execute during the process.
ComVisibleAttribute Rende i tipi invisibili a COM quando il valore dell'attributo è false.Renders types invisible to COM when the attribute value equals false. Questo attributo può essere applicato a un tipo singolo o a un intero assembly per controllare la visibilità COM.This attribute can be applied to an individual type or to an entire assembly to control COM visibility. Tutti i tipi gestiti e pubblici sono visibili per impostazione predefinita. Non è necessario usare questo attributo per renderli visibili.By default, all managed, public types are visible; the attribute is not needed to make them visible.
DispIdAttribute Specifica l'identificatore di invio (DISPID) COM di un metodo o un campo.Specifies the COM dispatch identifier (DISPID) of a method or field. Questo attributo contiene il DISPID per il metodo, il campo o la proprietà che descrive.This attribute contains the DISPID for the method, field, or property it describes.

Questo attributo può essere applicato dagli strumenti di interoperabilità COM.COM interop tools can apply this attribute.
FieldOffsetAttribute Indica la posizione fisica di ogni campo all'interno di una classe quando è usato con l'attributo StructLayoutAttribute e LayoutKind è impostato su Explicit.Indicates the physical position of each field within a class when used with the StructLayoutAttribute, and the LayoutKind is set to Explicit.
GuidAttribute Specifica l'identificatore univoco globale (GUID) di una classe, un'interfaccia o un'intera libreria dei tipi.Specifies the globally unique identifier (GUID) of a class, interface, or an entire type library. Il formato della stringa passata all'attributo deve essere un argomento di costruttore accettabile per il tipo System.Guid.The string passed to the attribute must be a format that is an acceptable constructor argument for the type System.Guid.

Questo attributo può essere applicato dagli strumenti di interoperabilità COM.COM interop tools can apply this attribute.
IDispatchImplAttribute Indica quale implementazione dell'interfaccia IDispatch viene usata da Common Language Runtime quando espone a COM interfacce duali e dispatch.Indicates which IDispatch interface implementation the common language runtime uses when exposing dual interfaces and dispinterfaces to COM.
InAttribute Indica che è necessario effettuare il marshalling dei dati verso il chiamante.Indicates that data should be marshaled in to the caller. Può essere usato per i parametri.Can be used to attribute parameters.
InterfaceTypeAttribute Controlla in che modo un'interfaccia gestita viene esposta ai client COM (duale, derivata da IUnknown o solo IDispatch).Controls how a managed interface is exposed to COM clients (Dual, IUnknown-derived, or IDispatch only).

Questo attributo può essere applicato dagli strumenti di interoperabilità COM.COM interop tools can apply this attribute.
LCIDConversionAttribute Indica che una firma di metodo non gestito accetta un parametro LCID.Indicates that an unmanaged method signature expects an LCID parameter.

Questo attributo può essere applicato dagli strumenti di interoperabilità COM.COM interop tools can apply this attribute.
MarshalAsAttribute Indica come deve essere effettuato il marshalling dei dati di campi o parametri tra codice gestito e codice non gestito.Indicates how the data in fields or parameters should be marshaled between managed and unmanaged code. L'attributo è sempre facoltativo perché per ogni tipo di dati è previsto un comportamento di marshalling predefinito.The attribute is always optional because each data type has default marshaling behavior.

Questo attributo può essere applicato dagli strumenti di interoperabilità COM.COM interop tools can apply this attribute.
OptionalAttribute Indica che un parametro è facoltativo.Indicates that a parameter is optional.

Questo attributo può essere applicato dagli strumenti di interoperabilità COM.COM interop tools can apply this attribute.
OutAttribute Indica che è necessario effettuare il marshalling dei dati di un campo o di un parametro da un oggetto chiamato al relativo chiamante.Indicates that the data in a field or parameter must be marshaled from a called object back to its caller.
PreserveSigAttribute Disattiva la trasformazione della firma retval o HRESULT che normalmente ha luogo durante le chiamate di interoperabilità.Suppresses the HRESULT or retval signature transformation that normally takes place during interoperation calls. L'attributo influisce sul marshalling e sull'esportazione delle librerie dei tipi.The attribute affects marshaling as well as type library exporting.

Questo attributo può essere applicato dagli strumenti di interoperabilità COM.COM interop tools can apply this attribute.
ProgIdAttribute Specifica il ProgID di una classe .NET Framework.Specifies the ProgID of a .NET Framework class. Può essere usato per le classi.Can be used to attribute classes.
StructLayoutAttribute Controlla il layout fisico dei campi di una classe.Controls the physical layout of the fields of a class.

Questo attributo può essere applicato dagli strumenti di interoperabilità COM.COM interop tools can apply this attribute.

Attributi degli strumenti di conversioneConversion-Tool Attributes

La tabella seguente descrive gli attributi applicati dagli strumenti di interoperabilità COM durante il processo di conversione.The following table describes attributes that COM interop tools apply during the conversion process. Questi attributi non devono essere applicati in fase di progettazione.You do not apply these attributes at design time.

AttributoAttribute DescriptionDescription
ComAliasNameAttribute Indica l'alias COM per un tipo di parametro o campo.Indicates the COM alias for a parameter or field type. Può essere usato per parametri, campi o valori restituiti.Can be used to attribute parameters, fields, or return values.
ComConversionLossAttribute Indica che le informazioni relative a una classe o a un'interfaccia sono andate perse durante l'importazione da una libreria dei tipi a un assembly.Indicates that information about a class or interface was lost when it was imported from a type library to an assembly.
ComEventInterfaceAttribute Identifica l'interfaccia di origine e la classe che implementa i metodi dell'interfaccia eventi.Identifies the source interface and the class that implements the methods of the event interface.
ImportedFromTypeLibAttribute Indica che l'assembly è stato importato in origine da una libreria dei tipi COM.Indicates that the assembly was originally imported from a COM type library. Questo attributo contiene la definizione della libreria dei tipi di origine.This attribute contains the type library definition of the original type library.
TypeLibFuncAttribute Contiene i FUNCFLAGS importati in origine per questa funzione dalla libreria dei tipi COM.Contains the FUNCFLAGS that were originally imported for this function from the COM type library.
TypeLibTypeAttribute Contiene i TYPEFLAGS importati in origine per questo tipo dalla libreria dei tipi COM.Contains the TYPEFLAGS that were originally imported for this type from the COM type library.
TypeLibVarAttribute Contiene i VARFLAGS importati in origine per questa variabile dalla libreria dei tipi COM.Contains the VARFLAGS that were originally imported for this variable from the COM type library.

Vedere ancheSee also