.NET Framework Class Library
ComDefaultInterfaceAttribute Class

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

Inheritance Hierarchy
SystemObject
   SystemAttribute
    System.Runtime.InteropServicesComDefaultInterfaceAttribute

Namespace:   System.Runtime.InteropServices
Assemblies:   System.Runtime.InteropServices (in System.Runtime.InteropServices.dll)
  mscorlib (in mscorlib.dll)
Syntax
<[%$TOPIC/taatchw0_en-us_VS_110_2_0_0_0_0%]([%$TOPIC/taatchw0_en-us_VS_110_2_0_0_0_1%].Class, Inherited := False)> _
Public NotInheritable Class ComDefaultInterfaceAttribute _
	Inherits [%$TOPIC/taatchw0_en-us_VS_110_2_0_0_0_2%]
[[%$TOPIC/taatchw0_en-us_VS_110_2_0_1_0_0%]([%$TOPIC/taatchw0_en-us_VS_110_2_0_1_0_1%].Class, Inherited = false)]
public sealed class ComDefaultInterfaceAttribute : [%$TOPIC/taatchw0_en-us_VS_110_2_0_1_0_2%]
[[%$TOPIC/taatchw0_en-us_VS_110_2_0_2_0_0%]([%$TOPIC/taatchw0_en-us_VS_110_2_0_2_0_1%]::Class, Inherited = false)]
public ref class ComDefaultInterfaceAttribute sealed : public [%$TOPIC/taatchw0_en-us_VS_110_2_0_2_0_2%]
[<[%$TOPIC/taatchw0_en-us_VS_110_2_0_3_0_0%]>]
[<[%$TOPIC/taatchw0_en-us_VS_110_2_0_3_0_1%]([%$TOPIC/taatchw0_en-us_VS_110_2_0_3_0_2%].Class, Inherited = false)>]
type ComDefaultInterfaceAttribute =  
    class 
        inherit [%$TOPIC/taatchw0_en-us_VS_110_2_0_3_0_3%] 
    end
public final class ComDefaultInterfaceAttribute extends [%$TOPIC/taatchw0_en-us_VS_110_2_0_4_0_0%]

The ComDefaultInterfaceAttribute type exposes the following members.

Constructors
  NameDescription
Public method Supported by Portable Class Library ComDefaultInterfaceAttributeInitializes a new instance of the ComDefaultInterfaceAttribute class with the specified SystemType object as the default interface exposed to COM.
Top
Properties
  NameDescription
Public property TypeIdWhen implemented in a derived class, gets a unique identifier for this Attribute. (Inherited from Attribute.)
Public property Supported by Portable Class Library ValueGets the SystemType object that specifies the default interface to expose to COM.
Top
Methods
  NameDescription
Public method Supported by Portable Class Library EqualsInfrastructure. Returns a value that indicates whether this instance is equal to a specified object. (Inherited from Attribute.)
Public method Supported by Portable Class Library GetHashCodeReturns the hash code for this instance. (Inherited from Attribute.)
Public method Supported by Portable Class Library GetTypeGets the Type of the current instance. (Inherited from Object.)
Public method IsDefaultAttributeWhen overridden in a derived class, indicates whether the value of this instance is the default value for the derived class. (Inherited from Attribute.)
Public method MatchWhen overridden in a derived class, returns a value that indicates whether this instance equals a specified object. (Inherited from Attribute.)
Public method Supported by Portable Class Library ToStringReturns a string that represents the current object. (Inherited from Object.)
Top
Explicit Interface Implementations
  NameDescription
Explicit interface implemetation Private method _AttributeGetIDsOfNamesMaps a set of names to a corresponding set of dispatch identifiers. (Inherited from Attribute.)
Explicit interface implemetation Private method _AttributeGetTypeInfoRetrieves the type information for an object, which can be used to get the type information for an interface. (Inherited from Attribute.)
Explicit interface implemetation Private method _AttributeGetTypeInfoCountRetrieves the number of type information interfaces that an object provides (either 0 or 1). (Inherited from Attribute.)
Explicit interface implemetation Private method _AttributeInvokeProvides access to properties and methods exposed by an object. (Inherited from Attribute.)
Top
Remarks

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 IDerived, IBase. The ordering of interfaces is important when using the ClassInterfaceAttribute class with [ClassInterface(ClassInterfaceType.None)] to expose an explicit interface as the default interface. Regardless of the specified ClassInterfaceType, use the ComDefaultInterfaceAttribute attribute to specify which interface should be recognized as the default.

Note that the type decorated by the ComDefaultInterfaceAttribute must actually derive from the interface specified as the default interface.

Version Information

.NET Framework

Supported in: 4.6, 4.5, 4, 3.5, 3.0, 2.0

.NET Framework Client Profile

Supported in: 4, 3.5 SP1

.NET for Windows Phone apps

Supported in: Windows Phone 8.1, Windows Phone Silverlight 8.1, Windows Phone Silverlight 8

Portable Class Library

Supported in: Portable Class Library
Thread Safety
Any public static (Shared in Visual Basic) members of this type are thread safe. Any instance members are not guaranteed to be thread safe.