为什么WinRT类型必须密封?

时间:2011-09-20 21:41:37

标签: interop sealed windows-runtime

在几个地方(例如MSDN上的“Creating Windows Runtime Components for JavaScript, in C# and Visual Basic”),我已经看到它指出,如果你在.NET中编写一个你想要从JavaScript中使用的类,那么你必须使它成为一个密封的类。

这似乎是一种任意限制。为什么JavaScript只适用于密封类?

1 个答案:

答案 0 :(得分:7)

从JavaScript应用程序公开的Windows运行时对象是封闭的 - 您不能将expando属性添加到WinRT对象。但是从C ++和C#,winrt对象可以继承如果对象支持继承(例如,大多数Xaml类支持继承,但大多数其他类不支持继承)。

WinRT对象与JS密封的原因是确保winrt对象的行为相同,无论应用程序做了什么 - 如果应用程序重新定义对象的某些功能属性,它可能会导致应用程序的其他部分出现异常。