众所周知,WinRT是Microsoft组件对象模型(COM)的增强版本。除了在十多年前管理分布式事务之外,我没有太多机会直接使用COM组件。我确信在操作系统级别内部使用了很多COM。
我读到的WinRT类型受到COM风格的限制。我可以通过互联网搜索获得一些限制,如下所示:
有人可以帮助我对COM类型施加一些好的高级别限制,或者可以指向一些好的资源,我可以在这里得到详尽的信息。我试过谷歌搜索但没有帮助。
答案 0 :(得分:1)
检查Restriction and Rules part of Wikipedia article
由于Windows Runtime被投射到各种语言,有些语言 存在对基本数据类型的限制以便托管所有这些 语言。程序员必须小心这些行为 与公共访问一起使用时的类型(用于方法参数,方法 返回值,属性等。
基本类型
在.NET语言和C ++中,存在一组丰富的数据类型, 代表各种数字。
在JavaScript中,Number只能表示最多53位的精度。
在WinRT中,唯一缺少数字数据类型的是8位有符号整数 相对于.NET和C ++。 JavaScript开发人员必须小心 在为WinRT编码时处理大数字。
<强>字符串强>
字符串在.NET和JavaScript中是不可变的,但在C ++中是可变的。
C ++将作为字符串传递给WinRT的空指针转换为 空字符串
在.Net中,将作为字符串传递给WinRT的null转换为 空字符串
在JavaScript中,将作为字符串传递给WinRT的null转换为 一个单词null的字符串。这是因为JavaScript的关键字为null 被表示为空对象
从JavaScript
传递undefined到WinRT时会出现类似的结果<强>的Structs 强>
在.NET和C ++中,结构是值类型,这样的结构可以 包含任何类型。
JavaScript不直接支持结构。
在WinRT中,只允许使用结构包含类型 具有值语义,包括数字,字符串和其他结构。 不允许使用指针或接口引用。
参考文献
在.NET中,对象通过引用传递,而数字和结构>按值传递。
在C ++中,所有类型都可以通过引用或值传递。
在WinRT中,接口通过引用传递;所有其他类型 通过价值传递。
数组
在.NET,C ++和JavaScript数组中是引用类型。
在WinRT中,数组是值类型。
活动
在.NET和C ++中,客户端使用+ =运算符订阅事件。
在JavaScript中,添加addEventListener函数或设置 property用于订阅事件。
在WinRT中,所有语言都可以使用自己的方式订阅事件。
<强>集合强>
某些.NET集合直接映射到WinRT集合。
WinRT Vector类型类似于数组,数组语法用于 消耗它们。
WinRT Map类型是一个键/值对集合,并被投影为 .NET语言中的字典。
方法重载
所有WinRT语言(.NET,C ++,JavaScript)都支持重载 参数
.NET和C ++也支持类型上的重载。
在WinRT中,只有参数号用于重载。
<强>非同步强>
所有WinRT方法都经过精心设计,任何方法都需要花费更长的时间 50毫秒是一种异步方法。
用于区分异步方法的既定命名模式是 异步。对于完整的运行时库,所有有机会的方法 持续时间超过50毫秒仅作为异步方法实现。