第二十五章 与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组件

每天学习一丢丢
原文地址:https://www.cnblogs.com/terry-1/p/10508452.html