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