WinRT类型显示的组件对象模型(COM)样式的行为/限制是什么?
本文关键字:是什么 显示 类型 组件对象模型 WinRT COM 样式 | 更新日期: 2023-09-27 18:13:01
众所周知,WinRT是微软组件对象模型(COM)的增强版本。十多年前,除了管理分布式事务外,我没有太多机会直接使用COM组件。我确信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毫秒的方法只能作为异步方法实现。