See Also: ComDefaultInterfaceAttribute Members
Compilers do not necessarily respect the order in which interfaces are implemented. For example, suppose you have the following code:
Example
interface IBase {}interface IDerived : IBase {}class MyClass : IBase, IDerived {}
The compiler emits the implemented interfaces as IDervied, IBase. The ordering of interfaces is important when using the System.Runtime.InteropServices.ClassInterfaceAttribute class with [ClassInterface(ClassInterfaceType.None)] to expose an explicit interface as the default interface. Regardless of the specified ClassInterfaceType, use the System.Runtime.InteropServices.ComDefaultInterfaceAttribute attribute to specify which interface should be recognized as the default.
Note that the type decorated by the System.Runtime.InteropServices.ComDefaultInterfaceAttribute must actually derive from the interface specified as the default interface.