应用 Interop 属性

更新:2007 年 11 月

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

如果您不熟悉将属性应用于托管代码这一任务,请参见利用属性扩展元数据。与其他自定义属性 (Attribute) 类似,Interop 特定的属性 (Attribute) 可以应用于类型、方法、属性 (Property)、参数、字段和其他成员。

设计时属性

利用设计时属性,可以调整 COM 互操作工具和 API 所执行的转换过程的结果。下表将说明可应用于托管源代码的属性。有时,COM 互操作工具也可能会应用下表所述的属性。

属性

说明

AutomationProxyAttribute

指定应使用自动封送拆收器还是自定义的代理和存根 (stub) 来封送类型。

ClassInterfaceAttribute

控制为类生成的接口类型。

CoClassAttribute

标识从类型库导入的初始 coclass 的 CLSID。

COM 互操作工具通常应用此属性。

ComImportAttribute

指示 coclass 或接口定义是从 COM 类型库导入的。运行库利用此标志来确定如何激活和封送类型。该属性 (Attribute) 禁止将类型导回类型库。

COM 互操作工具通常应用此属性。

ComRegisterFunctionAttribute

指示应该在注册程序集(使其可从 COM 中使用)时调用方法,以便在注册过程中执行用户编写的代码。

ComSourceInterfacesAttribute

标识作为类事件源代码的接口。

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

ComUnregisterFunctionAttribute

指定应该在从 COM 中注销程序集时调用方法,以便在此过程中执行用户编写的代码。

ComVisibleAttribute

使类型在属性值等于 false 时对于 COM 不可见。可以向单个类型或整个程序集应用此属性,以控制 COM 可见性。默认情况下,所有托管的公共类型都是可见的,因此不需要使用该属性来使其变为可见。

DispIdAttribute

指定方法或字段的 COM 调度标识符 (DISPID)。该属性 (Attribute) 包含它所描述的方法、字段或属性 (Property) 的 DISPID。

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

FieldOffsetAttribute

指示当与 StructLayoutAttribute 一起使用且将 LayoutKind 设置为 Explicit 时,每个字段在类中的物理位置。

GuidAttribute

指定类、接口或整个类型库的全局唯一标识符 (GUID)。传递给属性的字符串必须为类型 System.Guid 可接受的构造函数参数格式。

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

IDispatchImpAttribute

指示当向 COM 公开双重接口和调度接口时公共语言运行库使用何种 IDispatch 接口实现。

InAttribute

指示应将数据封送到调用方中。可用于表示参数的属性。

InterfaceTypeAttribute

控制如何向 COM 客户端(双重、由 IUnknown 导出或仅 IDispatch)公开托管接口。

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

LCIDConversionAttribute

指示非托管方法签名需要 LCID 参数。

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

MarshalAsAttribute

指示字段或参数中的数据应如何在托管和非托管代码之间封送。由于每种数据类型都具有默认的封送行为,所以此属性始终是可选的。

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

OptionalAttribute

指示参数是可选的。

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

OutAttribute

指示字段或参数中的数据必须从被调用的对象封送回它的调用方。

PreserveSigAttribute

防止通常在互用调用时发生的 HRESULT 或 retval 签名转换。此属性将影响封送以及类型库导出。

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

ProgIdAttribute

指定 .NET Framework 类的 ProgID。可用于表示类的属性。

StructLayoutAttribute

控制类的各字段的物理布局。

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

转换工具属性

下表将说明 COM 互操作工具在转换过程应用的属性。这些属性不在设计时应用。

属性

说明

ComAliasNameAttribute

指示参数或字段类型的 COM 别名。可用于表示参数、字段或返回值的属性。

ComConversionLossAttribute

指示从类型库向程序集导入类或接口时丢失了有关信息。

ComEventInterfaceAttribute

标识源接口和实现事件接口方法的类。

ImportedFromTypeLibAttribute

指示程序集最初是从 COM 类型库导入的。此属性包含原类型库的类型库定义。

TypeLibFuncAttribute

包含最初为此函数从 COM 类型库导入的 FUNCFLAGS

TypeLibTypeAttribute

包含最初为此类型从 COM 类型库导入的 TYPEFLAGS

TypeLibVarAttribute

包含最初为此变量从 COM 类型库导入的 VARFLAGS

请参见

概念

向 COM 公开 .NET Framework 组件

为互用性限定 .NET 类型

将 COM 的程序集打包

参考

System.Runtime.InteropServices

其他资源

利用属性扩展元数据