System.Runtime.InteropServices.ComDefaultInterfaceAttribute Class

Specifies a default interface to expose to COM. This class cannot be inherited.

See Also: ComDefaultInterfaceAttribute Members


[System.AttributeUsage(System.AttributeTargets.Class, Inherited=false)]
public sealed class ComDefaultInterfaceAttribute : Attribute


Compilers do not necessarily respect the order in which interfaces are implemented. For example, suppose you have the following code:


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.


Namespace: System.Runtime.InteropServices
Assembly: mscorlib (in mscorlib.dll)
Assembly Versions:,
Since: .NET 2.0