WinRT禁止自定义generics类型或接口的原因

在阅读了WinRT以及Build Decks之后,有人能够了解导致他们不允许我们通过我们自己的IFoo 的具体原因,但他们是否为他们自己认可的通用接口类型做了什么?

WinRT必须有一个用于描述,解析和传递generics参数的机制,或者为了自己的用途而使用它的一些幻想。

我无法想象以非generics方式“扁平化”我的一些C#类实用程序库,我主要想要使用C ++而不是JS。

我想要一流的Intellisense和API支持,就像你自己的MS类型一样。

那么……为什么我们也不能使用这种机制呢? 这可能是放宽和稍后允许的,还是永久限制? 或者这是由于语言投影层本身自定义处理特定的generics类型而没有任何generics类型共有的WinRT集中式元处理?

谢谢。

在封面下,作为IXxx投影的类型通过所谓的“参数化接口”或“pinterfaces”来实现。 每种语言投影都知道如何以自然和熟悉的方式表达内置参数化接口 – 例如,CLAP将IMap参数化接口投影为IDictionary。

语言预测(尤其是JS)不知道如何处理自定义参数化接口,因此不允许使用它们。

没有办法知道将来是否会放宽此限制,因为无法知道将来会向Windows添加哪些function。

同样对于建筑构件,有两个优点

  • 组合扩展是组件的更好模型(记住你仍然可以使用接口进行测试(例如C#lib),它们不能作为WinRT可导出组件公开

  • COM调用边界没有多态调用,因为内联性能不佳

我不确定JS会限制这个,因为JS无法创建对象,只是消耗它们可能添加了另一个JS限制 – 不支持框架接口..