17347

What is the ComposableAttribute in WinRT?

I'm trying to understand how some of the more lower-level portions of WinRT work. I came across the ComposableAttribute which may be the key to what I need. However, the documentation on it is very thin.

Indicates how a programming element is composed.

As you can tell, that doesn't actually tell me anything. Does anyone know what this attribute is used for and what it is suppose to do?

Answer1:

The ComposableAttribute marks a type as being instantiable for use as a base class across the Windows Runtime ABI boundary. It is similar to the ActivatableAttribute, which marks a type as being instantiable for "activation" (i.e. for direct use, not for use not as a base class) across the ABI boundary. The Windows Runtime is based on COM and does not really support real inheritance. Instead, inheritance is faked through metadata trickery and aggregation.

You can define your own composable types, but if you do, they must derive from a composable type in the platform (this is one of the metadata rules in the Windows 8 app certification requirements). For Windows 8, this means that your composable types must "derive" directly or indirectly from Windows.UI.Xaml.DependencyObject. Finally, composable types may only be authored using IDL and WRL; neither C++/CX nor .NET can be used to define a composable type.

Recommend

  • Java Regex expressions for Passwords
  • How to mock An Abstract Base Class
  • How to mock An Abstract Base Class
  • How to change the color of a check mark or 'more' arrow on a WinForms context menu?
  • What happens technically when a file is required in Ruby?
  • ST3 swap priority of tab function within a snippet (nested snippets)
  • Question mark icons showing up for quotation marks when there's a UTF-8 character encoding
  • Sql Server 2008 sp_executesql syntax help - I think my quotes are not correct
  • C# DynamicLinq where clause with Any()
  • Finding javafx jar file for windows
  • Google App Engine - SSL InsecurePlatformWarning
  • Calling a constructor through reflection in scala 2.10
  • WCF service runs in Debug mode but not in Release
  • What is the Linux Equivalent of Kernel32.dll?
  • CS1703: In Xamarin.Droid, should I use the .Net Standard windowsruntime.dll located in Mono.Framewor
  • How do I add a File Type Association in a Windows Phone 8.1 app manifest?
  • runtime error when linking ffmpeg libraries in qt creator
  • Get localized short date pattern as String?
  • Ruby on Rails App deployed to heroku showing “We're sorry, but something went wrong”
  • In matplotlib, how do you change the fontsize of a single figure?
  • Detecting null parameter in preprocessor macro
  • Spring: No transaction manager has been configured
  • accepts_nested_attributes_for practical form use for in Rails 3
  • C# program and C++ DLL compiled for 32-bit system crash on 64-bit system
  • Object and struct member access and address offset calculation
  • C# - Serializing and deserializing static member
  • Sony Xperia Z Tablet not found by adb
  • Javascript convert timezone issue
  • Why is the timeout on a windows udp receive socket always 500ms longer than set by SO_RCVTIMEO?
  • VB.net deserialize, JSON Conversion from type 'Dictionary(Of String,Object)' to type '
  • Cannot Parse HTML Data Using Android / JSOUP
  • How can I get HTML syntax highlighting in my editor for CakePHP?
  • How do you join a server to an Active Directory (domain)?
  • How do I configure my settings file to work with unit tests?
  • Java static initializers and reflection
  • IndexOutOfRangeException on multidimensional array despite using GetLength check
  • unknown Exception android
  • Binding checkboxes to object values in AngularJs
  • Observable and ngFor in Angular 2
  • Unable to use reactive element in my shiny app