簡體   English   中英

WinRT禁止自定義泛型類型或接口的原因

[英]WinRT reason for disallowing custom generic types or interfaces

在閱讀了有關WinRT以及Build Decks之后,有人能夠了解導致他們不允許我們通過我們自己的IFoo <T>的具體原因,但他們是否為他們自己認可的通用接口類型做了什么?

WinRT必須有一個機制來描述,解析和傳遞泛型參數,或者有一些花哨的東西圍繞它自己使用。

我無法想象以非泛型方式“扁平化”我的一些C#類實用程序庫,我主要想從C ++中使用而不是JS。

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

那么......為什么我們也不能使用這種機制呢? 這可能是放寬並允許以后或這是一個永久限制? 或者這是由於語言投影層本身自定義處理特定的泛型類型而沒有任何泛型類型共有的WinRT集中式元處理?

謝謝。

在幕后,作為IXxx投影的類型通過所謂的“參數化接口”或“pinterfaces”來實現。 每種語言投影都知道如何以自然和熟悉的方式表達內置參數化接口 - 例如,CLAP將IMap參數化接口投影為IDictionary。

語言預測(尤其是JS)不知道如何處理自定義參數化接口,因此不允許這樣做。

無法知道將來是否會放寬此限制,因為無法知道將來會向Windows添加哪些功能。

同樣對於建築構件,有兩個優點

  • 組合擴展是一個更好的組件模型(記住你仍然可以使用接口進行測試(例如C#lib),它們不能作為WinRT可導出組件公開

  • COM調用邊界沒有多態調用,因為內聯性能不佳

我不確定JS會限制這個,因為JS無法創建對象,只是消耗它們可能添加了另一個JS限制 - 不支持框架接口..

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM