Interoperability of a first framework or platform (e.g., COM) and a second
different framework or platform (e.g., .NET) is provided via an attribute
mechanism. The attribute mechanism is provided in a non-COM based
platform (e.g., .NET) to expose classes to COM. In this manner, a
compiler (e.g., the .NET compiler) creates class and events interfaces
and adds attributes to the class and interfaces as appropriate for
correct interoperability and marshaling. By adding this attribute
mechanism to a class in .NET, the .NET compiler is able to use the class
declarations (such as public methods, properties, and events) to
automatically generate a class interface and an events interface,
including appropriate dispatch IDs and GUIDs. Validation is performed on
the class being mapped to provide an indication, such as an error message
or warning, to the user that the underlying framework marshaling layer
cannot marshal certain data types as desired or expected.