在这里和在Build平台上阅读了有关WinRT的一些知识之后,有人可以阐明导致他们禁止我们传递自己的IFoo 的特定原理,但是他们为自己认可的通用接口(interface)类型这么做吗?
WinRT必须具有一种描述,解析和传递通用参数的机制,或者对此有某种幻想的风格供自己使用。
我无法想象以非通用方式“压平”我的一些C#类实用程序库,我主要想在C++中使用它,而在JS中不希望使用太多。
我希望一流的Intellisense和API支持与您对自己的MS类型的支持一样多。
那么...我们为什么也不能使用所说的机制?这可能会放宽并在以后允许吗?还是这是永久性的限制?还是这是由于语言投影层本身会自定义处理特定的通用类型而没有某些通用类型共有的WinRT集中元处理?
谢谢。
最佳答案
在幕后,被投影为IXxx的类型由所谓的“参数化接口(interface)”或“pinterfaces”实现。每个语言投影都知道如何以自然和熟悉的方式表示内置的参数化接口(interface)-例如,CLR将IMap参数化接口(interface)投影为IDictionary。
语言投影(尤其是JS)不知道如何使用自定义参数化接口(interface),因此不允许使用它们。
无法知道将来是否会放宽此限制,因为无法知道将来会向Windows添加哪些功能。