En varios lugares (por ejemplo, "Creating Windows Runtime Components for JavaScript, in C# and Visual Basic" en MSDN), lo he visto especificar que, si escribe una clase en .NET que desea usar desde JavaScript, debe convertirla en una clase sellada.¿Por qué los tipos WinRT deben sellarse?
Esto parece una restricción arbitraria. ¿Por qué JavaScript solo funciona con clases selladas?
Porque WinRT se basa en COM y COM no admite herencia. La palabra clave * sealed * garantiza que es claro para cualquiera que vea el código que dicha clase no es extensible a través de la herencia. –
@Hans En realidad, hay alguna forma de herencia admitida por WinRT, p. Ej. puede heredar de 'FrameworkElement' (que es una clase WinRT) en .NET. Y no tiene que marcar las clases definidas en C++/CX como selladas, y puede heredarlas también. Así que esto parece ser una limitación solo para autorizar componentes WinRT en .NET, no una limitación (heredada por COM) de WinRT. –
@Hans: COM admite herencia. Sin embargo, no permitimos la herencia de la interfaz en las interfaces winrt. –