System.Runtime.InteropServices 命名空间

System.Runtime.InteropServices 命名空间提供各种各样支持 COM interop 及平台调用服务的成员。如果您对这些服务不熟悉,请参见 与非托管代码交互操作

此命名空间提供了多种类别的功能,如下表所示。属性可控制封送行为,例如如何安排结构或表示字符串。其中最重要的属性有 DllImportAttribute(可以用来定义用于访问非托管 API 的平台调用方法)和 MarshalAsAttribute(可以用来指定如何在托管内存与非托管内存之间封送数据)。

  说明
公共类 AutomationProxyAttribute 指定是否应该使用自动化封送拆收器或自定义代理及存根 (Stub) 对该类型进行封送处理。
公共类 BestFitMappingAttribute 控制是否将 Unicode 字符转换为最接近的匹配 ANSI 字符。
公共类 BStrWrapper VT_BSTR 类型的数据从托管代码封送到非托管代码。无法继承此类。
公共类 ClassInterfaceAttribute 为公开给 COM 的类指定要生成的类接口的类型(如果有接口生成)。
公共类 CoClassAttribute 指定从类型库中导入的 coclass 的类标识符。
公共类 ComAliasNameAttribute 指示参数或字段类型的 COM 别名。
公共类 ComCompatibleVersionAttribute 向 COM 客户端指示程序集当前版本中的所有类与该程序集早期版本中的类兼容。
公共类 ComConversionLossAttribute 指示从类型库向程序集导入类或接口时丢失了有关信息。
公共类 ComDefaultInterfaceAttribute 指定要向 COM 公开的默认接口。无法继承此类。
公共类 ComEventInterfaceAttribute 标识源接口和实现事件接口(从 COM 类型库导入 coclass 时生成)的方法的类。
公共类 COMException 当从 COM 方法调用返回无法识别的 HRESULT 时引发的异常。
公共类 ComImportAttribute 指示该属性化类型是以前在 COM 中定义的。
公共类 ComRegisterFunctionAttribute 指定当注册用于 COM 的程序集时调用的方法;这可以用于注册过程中用户编写代码的执行。
公共类 ComSourceInterfacesAttribute 为属性化类标识公开为 COM 事件源的一组接口。
公共类 ComUnregisterFunctionAttribute 指定当注销用于 COM 的程序集时调用的方法;这可以用于注销过程中用户编写代码的执行。
公共类 ComVisibleAttribute 控制程序集中个别托管类型、成员或所有类型对 COM 的可访问性。
公共类 CriticalHandle 表示句柄资源的包装类。
公共类 CurrencyWrapper 对封送拆收器应该将其作为 VT_CY 封送的对象进行包装。
公共类 DefaultCharSetAttribute 指定 CharSet 枚举的值。无法继承此类。
公共类 DefaultParameterValueAttribute 当从支持默认参数的语言执行调用时,设置参数的默认值。无法继承此类。
公共类 DispatchWrapper 对封送拆收器应该将其作为 VT_DISPATCH 封送的对象进行包装。
公共类 DispIdAttribute 指定方法、字段或属性的 COM 调度标识符 (DISPID)。
公共类 DllImportAttribute 指示该属性化方法由非托管动态链接库 (DLL) 作为静态入口点公开。
公共类 ErrorWrapper 对封送拆收器应该将其作为 VT_ERROR 封送的对象进行包装。
公共类 ExtensibleClassFactory 在创建过程中启用从非托管对象扩展的托管对象的自定义。
公共类 ExternalException 所有 COM Interop 异常和结构化异常处理 (SEH) 异常的异常基类型。
公共类 FieldOffsetAttribute 指示字段在类或结构的非托管表示形式内的物理位置。
公共类 GuidAttribute 当不需要自动 GUID 时提供显式的 System.Guid
公共类 HandleCollector 跟踪未处理的句柄,并在达到指定阈值时强制执行垃圾回收。
公共类 IDispatchImplAttribute 指示当向 COM 公开双重接口和调度接口时公共语言运行库使用何种 IDispatch 实现。
公共类 ImportedFromTypeLibAttribute 指示在程序集内定义的类型原来在类型库中定义。
公共类 InAttribute 指示应将数据从调用方封送到被调用方,而不返回到调用方。
公共类 InterfaceTypeAttribute 指示向 COM 公开时,托管接口是双重的、仅支持调度的、还是仅支持 IUnknown 的。
公共类 InvalidComObjectException 当使用无效的 COM 对象时引发的异常。
公共类 InvalidOleVariantTypeException 封送拆收器在遇到不能封送到托管代码的 Variant 类型的参数时引发的异常。
公共类 LCIDConversionAttribute 指示方法的非托管签名需要区域设置标识符 (LCID) 参数。
公共类 Marshal 提供了一个方法集,这些方法用于分配非托管内存、复制非托管内存块、将托管类型转换为非托管类型,此外还提供了在与非托管代码交互时使用的其他杂项方法。
公共类 MarshalAsAttribute 指示如何在托管代码和非托管代码之间封送数据。
公共类 MarshalDirectiveException 当封送拆收器遇到它不支持的 MarshalAsAttribute 时引发的异常。
公共类 OptionalAttribute 指示参数是可选的。
公共类 OutAttribute 指示应将数据从被调用方封送回调用方。
公共类 PreserveSigAttribute 指示应取消在 COM interop 调用期间发生的 HRESULT 或 retval 签名转换。
公共类 PrimaryInteropAssemblyAttribute 指示该属性化的程序集是主 Interop 程序集。
公共类 ProgIdAttribute 允许用户指定类的 ProgID。
公共类 RegistrationServices 提供一组用于注册和注销托管程序集以供从 COM 使用的服务。
公共类 RuntimeEnvironment 提供一个返回有关公共语言运行库环境的信息的 static 方法的集合。
公共类 SafeArrayRankMismatchException 当传入的 SAFEARRAY 的秩与托管签名中指定的秩不匹配时引发的异常。
公共类 SafeArrayTypeMismatchException 当传入的 SAFEARRAY 的类型与托管签名中指定的类型不匹配时引发的异常。
公共类 SafeHandle 表示操作系统句柄的包装类。
公共类 SEHException 表示结构化异常处理程序 (SEH) 错误。
公共类 SetWin32ContextInIDispatchAttribute 此属性已被否决。
公共类 StandardOleMarshalObject 用标准 OLE STA 封送拆收器替换标准公共语言运行库 (CLR) 自由线程封送拆收器。
公共类 StructLayoutAttribute StructLayoutAttribute 类使用户可以控制类或结构的数据字段的物理布局。
公共类 TypeLibConverter 提供一组服务,将托管程序集转换为 COM 类型库或进行反向转换。
公共类 TypeLibFuncAttribute 包含最初从 COM 类型库为此方法导入的 FUNCFLAGS
公共类 TypeLibImportClassAttribute 指定哪个 Type 独占使用接口。无法继承此类。
公共类 TypeLibTypeAttribute 包含最初为此类型从 COM 类型库导入的 TYPEFLAGS
公共类 TypeLibVarAttribute 包含最初为此字段从 COM 类型库导入的 VARFLAGS
公共类 TypeLibVersionAttribute 指定导出类型库的版本号。
公共类 UnknownWrapper 对封送拆收器应该将其作为 VT_UNKNOWN 封送的对象进行包装。
公共类 UnmanagedFunctionPointerAttribute 控制作为非托管函数指针传入或传出非托管代码的委托签名的封送行为。无法继承此类。
公共类 VariantWrapper VT_VARIANT | VT_BYREF 类型的数据从托管代码封送到非托管代码。无法继承此类。

接口

  接口 说明
公共接口 _Activator 向非托管代码公开 System.Activator 类。
公共接口 _Assembly 向非托管代码公开 System.Reflection.Assembly 类的公共成员。
公共接口 _AssemblyBuilder 向非托管代码公开 System.Reflection.Emit.AssemblyBuilder 类。
公共接口 _AssemblyName 向非托管代码公开 AssemblyName 类。
公共接口 _Attribute 向非托管代码公开 System.Attribute 类。
公共接口 _ConstructorBuilder 向非托管代码公开 System.Reflection.Emit.ConstructorBuilder 类。
公共接口 _ConstructorInfo 向非托管代码公开 System.Reflection.ConstructorInfo 类的公共成员。
公共接口 _CustomAttributeBuilder 向非托管代码公开 System.Reflection.Emit.CustomAttributeBuilder 类。
公共接口 _EnumBuilder 向非托管代码公开 System.Reflection.Emit.EnumBuilder 类。
公共接口 _EventBuilder 向非托管代码公开 System.Reflection.Emit.EventBuilder 类。
公共接口 _EventInfo 向非托管代码公开 System.Reflection.EventInfo 类的公共成员。
公共接口 _Exception 向非托管代码公开 System.Exception 类的公共成员。
公共接口 _FieldBuilder 向非托管代码公开 System.Reflection.Emit.FieldBuilder 类。
公共接口 _FieldInfo 向非托管代码公开 System.Reflection.FieldInfo 类的公共成员。
公共接口 _ILGenerator 向非托管代码公开 System.Reflection.Emit.ILGenerator 类。
公共接口 _LocalBuilder 向非托管代码公开 System.Reflection.Emit.LocalBuilder 类。
公共接口 _MemberInfo 向非托管代码公开 System.Reflection.MemberInfo 类的公共成员。
公共接口 _MethodBase 向非托管代码公开 System.Reflection.MethodBase 类的公共成员。
公共接口 _MethodBuilder 向非托管代码公开 MethodBuilder 类。
公共接口 _MethodInfo 向非托管代码公开 System.Reflection.MethodInfo 类的公共成员。
公共接口 _MethodRental 向非托管代码公开 System.Reflection.Emit.MethodRental 类。
公共接口 _Module 向非托管代码公开 Module 类。
公共接口 _ModuleBuilder 向非托管代码公开 System.Reflection.Emit.ModuleBuilder 类。
公共接口 _ParameterBuilder 向非托管代码公开 System.Reflection.Emit.ParameterBuilder 类。
公共接口 _ParameterInfo 向非托管代码公开 System.Reflection.ParameterInfo 类。
公共接口 _PropertyBuilder 向非托管代码公开 System.Reflection.Emit.PropertyBuilder 类。
公共接口 _PropertyInfo 向非托管代码公开 System.Reflection.PropertyInfo 类的公共成员。
公共接口 _SignatureHelper 向非托管代码公开 System.Reflection.Emit.SignatureHelper 类。
公共接口 _Thread 向非托管代码公开 System.Threading.Thread 类。
公共接口 _Type 向非托管代码公开 System.Type 类的公共成员。
公共接口 _TypeBuilder 向非托管代码公开 System.Reflection.Emit.TypeBuilder 类。
公共接口 ICustomAdapter 为客户端访问实际对象(而不是自定义封送拆收器分发的适配器对象)提供了一种方式。
公共接口 ICustomFactory 使用户能够为扩展 MarshalByRefObject 的托管对象编写激活代码。
公共接口 ICustomMarshaler 旨在提供用于处理方法调用的自定义包装。
公共接口 IRegistrationServices 提供一组用于注册和注销托管程序集以供从 COM 使用的服务。
公共接口 ITypeLibConverter 提供一组服务,将托管程序集转换为 COM 类型库或进行反向转换。
公共接口 ITypeLibExporterNameProvider 当导出到类型库时提供名称大小写控制。
公共接口 ITypeLibExporterNotifySink 提供回调机制,以供程序集转换器向调用方通知转换的状态,并在转换过程本身之中涉及调用方。
公共接口 ITypeLibImporterNotifySink 提供回调机制,以供类型库转换器向调用方通知转换的状态,并在转换过程本身之中涉及调用方。
公共接口 UCOMIBindCtx 应改用 BIND_OPTS
公共接口 UCOMIConnectionPoint 应改用 IConnectionPoint
公共接口 UCOMIConnectionPointContainer 应改用 IConnectionPointContainer
公共接口 UCOMIEnumConnectionPoints 应改用 IEnumConnectionPoints
公共接口 UCOMIEnumConnections 应改用 IEnumConnections
公共接口 UCOMIEnumMoniker 应改用 IEnumMoniker
公共接口 UCOMIEnumString 应改用 IEnumString
公共接口 UCOMIEnumVARIANT 应改用 IEnumVARIANT
公共接口 UCOMIMoniker 应改用 IMoniker
公共接口 UCOMIPersistFile 注意:此接口现在已过时。应改用 IPersistFile
公共接口 UCOMIRunningObjectTable 应改用 IRunningObjectTable
公共接口 UCOMIStream 应改用 IStream
公共接口 UCOMITypeComp 应改用 ITypeComp
公共接口 UCOMITypeInfo 应改用 ITypeInfo
公共接口 UCOMITypeLib 应改用 ITypeLib

结构

  结构 说明
公共结构 ArrayWithOffset 在指定的数组中封装数组和偏移量。
公共结构 BIND_OPTS 应改用 BIND_OPTS
公共结构 BINDPTR 应改用 BINDPTR
公共结构 CONNECTDATA 应改用 CONNECTDATA
公共结构 DISPPARAMS 应改用 DISPPARAMS
公共结构 ELEMDESC 应改用 ELEMDESC
公共结构 ELEMDESC.DESCUNION 应改用 ELEMDESC.DESCUNION
公共结构 EXCEPINFO 应改用 EXCEPINFO
公共结构 FILETIME 应改用 FILETIME
公共结构 FUNCDESC 应改用 FUNCDESC
公共结构 GCHandle 提供从非托管内存访问托管对象的方法。
公共结构 HandleRef 包装一个托管对象,该对象保存使用平台 invoke(调用)传递给非托管代码的资源句柄。
公共结构 IDLDESC 应改用 IDLDESC
公共结构 PARAMDESC 应改用 PARAMDESC
公共结构 STATSTG 应改用 STATSTG
公共结构 TYPEATTR 应改用 TYPEATTR
公共结构 TYPEDESC 应改用 TYPEDESC
公共结构 TYPELIBATTR 应改用 TYPELIBATTR
公共结构 VARDESC 应改用 VARDESC
公共结构 VARDESC.DESCUNION 注意:此结构已过时。应改用 VARDESC.DESCUNION

委托

  委托 说明
公共委托 ObjectCreationDelegate 创建 COM 对象。

枚举

  枚举 说明
公共枚举 AssemblyRegistrationFlags 定义当注册程序集时使用的一组标志。
公共枚举 CALLCONV 应改用 CALLCONV
公共枚举 CallingConvention 指定调用在非托管代码中实现的方法所需的调用约定。
公共枚举 CharSet 规定封送字符串应使用何种字符集。
公共枚举 ClassInterfaceType 标识为某个类生成的类接口的类型。
公共枚举 ComInterfaceType 标识如何向 COM 公开接口。
公共枚举 ComMemberType 描述 COM 成员的类型。
公共枚举 DESCKIND 应改用 DESCKIND
公共枚举 ExporterEventKind 描述类型库导出程序在导出类型库时生成的回调。
公共枚举 FUNCFLAGS 应改用 FUNCFLAGS
公共枚举 FUNCKIND 应改用 FUNCKIND
公共枚举 GCHandleType 表示 GCHandle 类可以分配的句柄的类型。
公共枚举 IDispatchImplType 指示对特定类使用何种 IDispatch 实现。
公共枚举 IDLFLAG 应改用 IDLFLAG
公共枚举 IMPLTYPEFLAGS 应改用 IMPLTYPEFLAGS
公共枚举 ImporterEventKind 描述类型库导入程序在导入类型库时生成的回调。
公共枚举 INVOKEKIND 应改用 INVOKEKIND
公共枚举 LayoutKind 控制当导出到非托管代码时对象的布局。
公共枚举 LIBFLAGS 应改用 LIBFLAGS
公共枚举 PARAMFLAG 应改用 PARAMFLAG
公共枚举 RegistrationClassContext 指定执行上下文集,类对象将在这些上下文中对请求构造实例的请求可用。
公共枚举 RegistrationConnectionType 定义到类对象的连接的类型。
公共枚举 SYSKIND 应改用 SYSKIND
公共枚举 TYPEFLAGS 应改用 TYPEFLAGS
公共枚举 TYPEKIND 应改用 TYPEKIND
公共枚举 TypeLibExporterFlags 指示应该如何生成类型库。
公共枚举 TypeLibFuncFlags 描述从中导入该方法的 COM 类型库中 FUNCFLAGS 的原始设置。
公共枚举 TypeLibImporterFlags 指示应该如何生成程序集。
公共枚举 TypeLibTypeFlags 描述从中导入该类型的 COM 类型库中 TYPEFLAGS 的原始设置。
公共枚举 TypeLibVarFlags 描述从中导入此变量的 COM 类型库中 VARFLAGS 的原始设置。
公共枚举 UnmanagedType 指定如何将参数或字段封送到非托管代码。
公共枚举 VarEnum 指示当数组作为 UnmanagedType.SafeArray 从托管代码封送到非托管代码时,如何封送该数组的元素。
公共枚举 VARFLAGS 应改用 VARFLAGS