WinRT类型显示的组件对象模型(COM)样式的行为/限制是什么?

本文关键字:是什么 显示 类型 组件对象模型 WinRT COM 样式 | 更新日期: 2023-09-27 18:13:01

众所周知,WinRT是微软组件对象模型(COM)的增强版本。十多年前,除了管理分布式事务外,我没有太多机会直接使用COM组件。我确信COM在操作系统级内部使用得很多。

我读到WinRT类型受到com风格的限制。我通过在互联网上搜索得到了一些限制,如下所示:

  • WinRT类型必须按照这篇文章的要求默认密封。
  • 它们对继承和泛型提供了有限的支持,因为它只支持接口继承,而不支持实现继承,这是这篇文章中公认的答案。

有人可以帮助我与一些良好的高层限制强加的COM类型,或者可能是指向我一些好的资源,我可以得到一个详尽的信息。我试着搜索了很多,但没有帮助。

WinRT类型显示的组件对象模型(COM)样式的行为/限制是什么?

查看维基百科文章的限制和规则部分

由于Windows运行时被投射到各种语言,一些存在对基本数据类型的限制,以便承载所有这些语言。程序员必须小心处理它们的行为类型与公共访问一起使用时的类型(对于方法参数,method返回值、属性等

基本类型

在。net语言和c++中,存在丰富的数据类型集,表示各种数字

在JavaScript中,一个数字最多只能表示53位的精度。

在WinRT中,唯一缺少的数字数据类型是8位有符号整数相对于。net和c++。JavaScript开发人员必须小心在为WinRT编码时处理大数

字符串

字符串在。net和JavaScript中是不可变的,但在c++中是可变的。

由c++传递给WinRT的空指针作为字符串被转换为空字符串

在。net中,作为字符串传递给WinRT的null被转换为空字符串

在JavaScript中,null作为字符串传递给WinRT被转换为包含单词null的字符串。这是由于JavaScript的关键字null表示为空对象

当从JavaScript

向WinRT传递undefined时也会出现类似的结果

结构

在。net和c++中,结构体是值类型,这样的结构体可以可以包含任意类型

JavaScript不直接支持结构体

在WinRT中,结构体只允许用于包含以下类型具有值语义,包括数字、字符串和其他结构体。不允许使用指针或接口引用。

引用

在。net中,对象是通过引用传递的,而数字和结构体是通过值传递的。

在c++中,所有类型都可以通过引用或值传递。

在WinRT中,接口是通过引用传递的;所有其他类型是

在。net中,c++和JavaScript数组都是引用类型。

在WinRT中,数组是值类型。

在。net和c++中,客户端使用+=操作符订阅事件。

在JavaScript中,addEventListener函数或设置为on属性用于订阅事件。

在WinRT中,所有语言都可以使用自己的方式订阅事件。

一些。net集合直接映射到WinRT集合。

WinRT Vector类型类似于数组,数组语法用于消费。

WinRT Map类型是一个键/值对集合,并且被投影为. net语言中的字典。

方法重载

所有WinRT语言(。. NET, c++, JavaScript)支持重载参数

。. NET和c++也支持类型重载。

在WinRT中,只有参数number用于重载。

异步

所有的WinRT方法都是这样设计的,任何方法都需要超过50毫秒是一个异步方法。

已建立的区分异步方法的命名模式为异步。对于完整的运行时库,所有有机会持续时间超过50毫秒的方法只能作为异步方法实现。