The runtime’s Interop services operate at the binary level as opposed to the source level. It provides a mechanism for exposing managed types in a binary format that is compatible with COM and vice-versa. There are no guarantees regarding the level of effort required to build a type that are binary compatible with a COM type.