为什么暴露类型必须为WinMD/WinRT组件密封?

Til*_*lak 7 .net sealed windows-8 windows-runtime winrt-xaml

VS编译器不允许为WINMD类型库创建密封的公开类型.

为什么要放置此限制?(我知道密封类型的优点,我的问题是关于Win RT组件).

Han*_*ant 4

这是 COM 施加的体系结构限制。它是任何 WinRT 类型的核心,它们派生自 IUnknown 和 IInspectable。COM 的问题是它只支持接口继承而不支持实现继承。这是一个强大的 COM 设计目标,实现继承充满了实现细节,包括臭名昭著的钻石问题。

有一种方法可以通过委托来使继承工作,派生类中的每个方法都显式调用相应的基接口方法,但自己做起来非常痛苦。但 Windows.UI.Xaml 类实现继承的方式除外。