Applying Interop AttributesĀ
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.
If you are unfamiliar with the task of applying attributes to managed code, see Extending Metadata Using Attributes. Like other custom attributes, you can apply interop-specific attributes to types, methods, properties, parameters, fields, and other members.
Design-Time Attributes
You can adjust the outcome of the conversion process performed by COM interop tools and APIs by using design-time attributes. The following table describes the attributes that you can apply to your managed source code. COM interop tools, on occasion, might also apply the attributes described in this table.
Attribute | Description |
---|---|
Specifies whether the type should be marshaled using the Automation marshaler or a custom proxy and stub. |
|
Controls the type of interface generated for a class. |
|
Identifies the CLSID of the original coclass imported from a type library. COM interop tools typically apply this attribute. |
|
Indicates that a coclass or interface definition was imported from a COM type library. The runtime uses this flag to know how to activate and marshal the type. This attribute prohibits the type from being exported back to a type library. COM interop tools typically apply this attribute. |
|
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. |
|
Identifies interfaces that are sources of events for the class. COM interop tools can apply this attribute. |
|
Indicates that a method should be called when the assembly is unregistered from COM, so that user-written code can execute during the process. |
|
Renders types invisible to COM when the attribute value equals false. This attribute can be applied to an individual type or to an entire assembly to control COM visibility. By default, all managed, public types are visible; the attribute is not needed to make them visible. |
|
Specifies the COM dispatch identifier (DISPID) of a method or field. This attribute contains the DISPID for the method, field, or property it describes. COM interop tools can apply this attribute. |
|
Indicates the physical position of each field within a class when used with the StructLayoutAttribute, and the LayoutKind is set to Explicit. |
|
Specifies the globally unique identifier (GUID) of a class, interface, or an entire type library. The string passed to the attribute must be a format that is an acceptable constructor argument for the type System.Guid. COM interop tools can apply this attribute. |
|
Indicates which IDispatch interface implementation the common language runtime uses when exposing dual interfaces and dispinterfaces to COM. |
|
Indicates that data should be marshaled in to the caller. Can be used to attribute parameters. |
|
Controls how a managed interface is exposed to COM clients (Dual, IUnknown-derived, or IDispatch only). COM interop tools can apply this attribute. |
|
Indicates that an unmanaged method signature expects an LCID parameter. COM interop tools can apply this attribute. |
|
Indicates how the data in fields or parameters should be marshaled between managed and unmanaged code. The attribute is always optional because each data type has default marshaling behavior. COM interop tools can apply this attribute. |
|
Indicates that a parameter is optional. COM interop tools can apply this attribute. |
|
Indicates that the data in a field or parameter must be marshaled from a called object back to its caller. |
|
Suppresses the HRESULT or retval signature transformation that normally takes place during interoperation calls. The attribute affects marshaling as well as type library exporting. COM interop tools can apply this attribute. |
|
Specifies the ProgID of a .NET Framework class. Can be used to attribute classes. |
|
Controls the physical layout of the fields of a class. COM interop tools can apply this attribute. |
Conversion-Tool Attributes
The following table describes attributes that COM interop tools apply during the conversion process. You do not apply these attributes at design time.
Attribute | Description |
---|---|
Indicates the COM alias for a parameter or field type. Can be used to attribute parameters, fields, or return values. |
|
Indicates that information about a class or interface was lost when it was imported from a type library to an assembly. |
|
Identifies the source interface and the class that implements the methods of the event interface. |
|
Indicates that the assembly was originally imported from a COM type library. This attribute contains the type library definition of the original type library. |
|
Contains the FUNCFLAGS that were originally imported for this function from the COM type library. |
|
Contains the TYPEFLAGS that were originally imported for this type from the COM type library. |
|
Contains the VARFLAGS that were originally imported for this variable from the COM type library. |
See Also
Reference
System.Runtime.InteropServices
Concepts
Exposing .NET Framework Components to COM
Qualifying .NET Types for Interoperation
Packaging an Assembly for COM