2016-10-13 9 views
1

众所周知,WinRT是微软组件对象模型(COM)的增强版本。除了在十年前管理分布式事务之外,我没有太多机会直接使用COM组件。我确定COM在操作系统级别内部使用很多。什么是WinRT类型展示的组件对象模型(COM)风格的行为/限制

我读到WinRT类型受到COM风格的限制。我可以通过搜索互联网上下面让一些限制:

  • WinRT的类型有默认要密封的要求在这个岗位here
  • 它们对继承和泛型提供了有限的支持,因为它只支持接口继承,但不支持继承,正如在本文后面的接受答案here中所建议的。

有人可以帮助我对COM类型强加一些很好的高级别限制,或者可以指向我一些很好的资源,我可以在这里获得详尽的信息。我尝试了很多谷歌搜索,但没有任何帮助。

回答

1

检查Restriction and Rules part of Wikipedia article

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

基本类型

在.NET语言和C++,一个一套丰富的数据类型的存在, 表示各种标记。

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

在WinRT的,唯一的缺乏NU meral数据类型是相对于.NET和C++的8位有符号整数 。当编码WinRT时,处理大数字的 必须小心JavaScript开发人员。

字符串

字符串是在.NET和JavaScript,但可变的用C++不可改变。

如C++的字符串的WinRT传递空指针被转换成 空字符串

在.NET中,空被作为字符串到WinRT的被转换成 空字符串

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

传递未定义的WinRT时

类似的结果发生的Structs

在.NET和C++,结构是值类型,并且这样一个结构体可以包含任何类型。

JavaScript不直接支持结构。

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

参考

在.NET中,对象是通过引用传递,而数字和结构是>值传递。

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

在WinRT中,接口通过引用传递;所有其他类型都是 按价值传递。

阵列

在.NET,C++,和JavaScript数组是引用类型。

在WinRT中,数组是值类型。

活动

在.NET和C++,客户端订阅使用+ =操作事件。

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

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

集合

一些.NET的集合直接映射到WinRT的集合。

WinRT向量类型与数组类似,并且数组语法用于 消耗它们。

WinRT映射类型是一个键/值对集合,并且计划为 .NET语言中的词典。

方法重载

所有的WinRT语言(.NET,C++,JavaScript的)支持过载上 参数

.NET和C++也支持重载上型。

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

非同步

所有的WinRT方法被设计成使得花费的时间比 50毫秒的任何方法是一种异步方法。

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

相关问题