Exposing .NET Framework Components to COM
Writing a .NET type and consuming that type from unmanaged code are distinct activities for developers. This section describes several tips for writing managed code that interoperates with COM clients:
Qualifying .NET types for interoperation.
All managed types, methods, properties, fields, and events that you want to expose to COM must be public. Types must have a public default constructor, which is the only constructor that can be invoked through COM.
Custom attributes within managed code can enhance the interoperability of a component.
Packaging an assembly for COM.
COM developers might require that you summarize the steps involved in referencing and deploying your assemblies.
Additionally, this section identifies the tasks related to consuming a managed type from a COM client.
To consume a managed type from COM
Types in an assembly (and type libraries) must be registered at design time. If an installer does not register the assembly, instruct COM developers to use Regasm.exe.
Reference .NET types from COM.
COM developers can reference types in an assembly using the same tools and techniques they use today.
COM developers can call methods on the .NET object the same way they call methods on any unmanaged type. For example, the COM CoCreateInstance API activates .NET objects.
Deploy an application for COM access.
A strong-named assembly can be installed in the global assembly cache and requires a signature from its publisher. Assemblies that are not strong named must be installed in the application directory of the client.
Interoperating with Unmanaged Code | COM Interop Sample: COM Client and .NET Server