应用互操作特性

命名空间 System.Runtime.InteropServices 提供三类特定于互作的属性:设计时由你应用的属性、在转换过程中由 COM 互作工具和 API 应用的属性,以及由你或 COM 互作应用的属性。

如果不熟悉将属性应用于托管代码的任务,请参阅 使用属性扩展元数据。 与其他自定义属性一样,可以将互操作性特定的属性应用于类型、方法、属性、参数、字段和其他成员。

设计时特性

可以使用设计时属性调整 COM 互作工具和 API 执行的转换过程的结果。 下表描述了可应用于托管源代码的属性。 有时,COM 互作工具也可能应用此表中所述的属性。

特征 DESCRIPTION
AutomationProxyAttribute 指定应使用自动化封送处理程序还是自定义代理和存根对类型进行封送处理。
ClassInterfaceAttribute 控制为类生成的接口的类型。
CoClassAttribute 标识从类型库导入的原始组件类的 CLSID。

COM 互作工具通常应用此属性。
ComImportAttribute 指示组件类或接口定义是从 COM 类型库导入的。 运行时使用此标记来确定如何对类型进行激活和封送处理。 此属性禁止将类型导出回类型库。

COM 互作工具通常应用此属性。
ComRegisterFunctionAttribute 指示在注册程序集以供 COM 使用时应调用方法,以便在注册过程中执行用户编写的代码。
ComSourceInterfacesAttribute 标识类的事件源的接口。

COM 互作工具可以应用此属性。
ComUnregisterFunctionAttribute 指示当程序集从 COM 注销时,应当调用一个方法,以便用户自行编写的代码可以在过程中执行。
ComVisibleAttribute 当属性值等于 false 时,呈现 COM 不可见的类型。 此属性可以应用于单个类型或整个程序集,以控制 COM 可见性。 默认情况下,所有托管的公共类型都可见;无需属性即可使其可见。
DispIdAttribute 指定方法或字段的 COM 调度标识符(DISPID)。 此属性包含它描述的方法、字段或属性的 DISPID。

COM 互作工具可以应用此属性。
ComDefaultInterfaceAttribute 指示在 .NET 中实现的 COM 类的默认接口。

COM 互作工具可以应用此属性。
FieldOffsetAttribute StructLayoutAttribute 一起使用时,指示类中每个字段的物理位置,并要求 LayoutKind 设置为 Explicit。
GuidAttribute 指定类、接口或整个类型库的全局唯一标识符(GUID)。 传递给特性的字符串必须是 System.Guid 类型的可接受的构造函数参数的格式。

COM 互作工具可以应用此属性。
IDispatchImplAttribute 指示当向 COM 公开双重接口和调度时,公共语言运行时使用哪个 IDispatch 接口实现
InAttribute 指示数据应封送到调用方。 可用于指定参数。
InterfaceTypeAttribute 控制如何向 COM 客户端公开托管接口(仅限于双重、IUnknown-derived 或 IDispatch)。

COM 互作工具可以应用此属性。
LCIDConversionAttribute 指示非托管的方法签名应具有 LCID 参数。

COM 互作工具可以应用此属性。
MarshalAsAttribute 指示如何在托管代码和非托管代码之间封送字段或参数中的数据。 此特性始终是可选的,因为每个数据类型都具有默认的封送处理行为。

COM 互作工具可以应用此属性。
OptionalAttribute 指示参数是可选的。

COM 互作工具可以应用此属性。
OutAttribute 指示字段或参数中的数据必须从被调用对象封送回其调用方。
PreserveSigAttribute 取消一般在互操作调用过程中发生的 HRESULT 或 retval 签名转换。 特性会影响封送处理以及类型库导出。

COM 互作工具可以应用此属性。
ProgIdAttribute 指定 .NET 类的 ProgID。 可用于特性类。
StructLayoutAttribute 控制类的字段的物理布局。

COM 互作工具可以应用此属性。

转换工具特性

下表描述了 COM 互作工具在转换过程中应用的属性。 设计时不应用这些属性。

特征 DESCRIPTION
ComAliasNameAttribute 指示参数或字段类型的 COM 别名。 可用于属性参数、字段或返回值。
ComConversionLossAttribute 指示从类型库导入程序集时,有关类或接口的信息丢失。
ComEventInterfaceAttribute 标识实现事件接口方法的源接口和类。
ImportedFromTypeLibAttribute 指示程序集最初是从 COM 类型库导入的。 此属性包含原始类型库的类型库定义。
TypeLibFuncAttribute 包含最初从 COM 类型库为此功能导入的 FUNCFLAGS
TypeLibTypeAttribute 包含最初为此类型从 COM 类型库导入的 TYPEFLAGS
TypeLibVarAttribute 包含最初从 COM 类型库为此变量导入的 VARFLAGS

另请参阅