第二十五章 与WinRT组件互操作
目录:
CLR投射与WinRT组件类型系统规则
框架投射
用C#定义WinRT组件
Windows 运行时:组件的目的是公开操作系统最擅长的事情,就是对硬件和跨应用程序的功能进行抽象。所以大多数WinRT组件都只是公开了功能,比如存储,联网,图形,媒体,安全性,线程处理等。WinRT组件内部作为“组件对象模型”组件来实现。WinRT组件使用由ECMA协会标准化的.NET元数据格式(ECMA-335)来描述其API。
元数据比类库更优表现力。CLR一开始就通过运行时可调用包装器和COM包装器实现了与COM组件的互操作。
CLR投射:CLR投射由CLR隐式执行,通常和元数据的重新解释有关。
Framework投射:Framework投射由你的代码显示执行,这是通过FCL新引入的API来执行。
CLR投射与WinRT组件类型系统规则
CLR看到一个WinRT类型时,通常允许通过CLR的一般化COM互操作技术来使用该类型。但有时CLR会隐藏WinRT类型(将其动态设为私有)。然后,CLR通过一个不同的类型来公开该类型。在内部,CLR会查找特定的类型(通过元数据),然后将这些类型映射成FCL的类型。
框架投射
异步编程,WinRT流和.NET Framework流之间的互操作以及需要在CLR和WinRT API之间传输数据块的时候需要使用框架投射。
2.1 从.NET代码中调用异步WinRT API
2.2 WinRT流和.NET流之间的互操作
2.3 在CLR和WinRT之间传送数据块
用C#定义WinRT组件
每天学习一丢丢