ClassInterfaceType Énumération

Définition

Identifie le type d’interface de classe généré pour une classe.

public enum class ClassInterfaceType
public enum ClassInterfaceType
[System.Serializable]
public enum ClassInterfaceType
[System.Serializable]
[System.Runtime.InteropServices.ComVisible(true)]
public enum ClassInterfaceType
type ClassInterfaceType = 
[<System.Serializable>]
type ClassInterfaceType = 
[<System.Serializable>]
[<System.Runtime.InteropServices.ComVisible(true)>]
type ClassInterfaceType = 
Public Enum ClassInterfaceType
Héritage
ClassInterfaceType
Attributs

Champs

Nom Valeur Description
None 0

Indique qu’aucune interface de classe n’est générée pour la classe. Si aucune interface n’est implémentée explicitement, la classe ne peut fournir qu’un accès à liaison tardive via l’interface IDispatch . Il s’agit du paramètre recommandé pour ClassInterfaceAttribute. L’utilisation ClassInterfaceType.None est la seule façon d’exposer des fonctionnalités par le biais d’interfaces implémentées explicitement par la classe.

Tlbexp.exe (Exporteur de bibliothèque de types) expose la première interface publique visible par COM implémentée par la classe comme interface par défaut de la coclasse. Dans .NET Framework 2.0 et versions ultérieures, vous pouvez spécifier l’interface par défaut exposée à COM à l’aide de l’attribut ComDefaultInterfaceAttribute. Si la classe n’implémente aucune interface, la première interface publique visible par COM implémentée par une classe de base devient l’interface par défaut (en commençant par la classe de base dérivée la plus récente et en arrière). Tlbexp.exe expose _Object comme interface par défaut si ni la classe ni ses classes de base implémentent des interfaces.

AutoDispatch 1

Indique que la classe prend uniquement en charge la liaison tardive pour les clients COM. A dispinterface pour la classe est automatiquement exposée aux clients COM à la demande. La bibliothèque de types produite par Tlbexp.exe (exporteur de bibliothèque de types) ne contient pas d’informations de type pour empêcher dispinterface les clients de mettre en cache les DISPID de l’interface. Le dispinterface n’affiche pas les problèmes de contrôle de version décrits dans la ClassInterfaceAttribute mesure où les clients peuvent uniquement lier tardivement à l’interface.

Il s’agit du paramètre par défaut pour ClassInterfaceAttribute.

AutoDual 2

Indique qu’une interface double classe est générée automatiquement pour la classe et exposée à COM. Les informations de type sont produites pour l’interface de classe et publiées dans la bibliothèque de types. L’utilisation AutoDual est fortement déconseillée en raison des limitations de contrôle de version décrites dans ClassInterfaceAttribute.

Exemples

Cet exemple montre comment appliquer le ClassInterfaceAttribute fichier à un type, en définissant le ClassInterfaceType. Les classes définies de cette façon peuvent être utilisées à partir de COM non managé.

using namespace System;
using namespace System::Runtime::InteropServices;

// Have the CLR expose a class interface (derived from IDispatch)
// for this type. COM clients can call the  members of this
// class using the Invoke method from the IDispatch interface.
[ClassInterface(ClassInterfaceType::AutoDispatch)]
public ref class AClassUsableViaCOM
{
public:
    AClassUsableViaCOM() 
    { 
    }

public:
    int Add(int x, int y)
    {
        return x + y;
    }
};

// The CLR does not expose a class interface for this type.
// COM clients can call the members of this class using
// the methods from the IComparable interface.
[ClassInterface(ClassInterfaceType::None)]
public ref class AnotherClassUsableViaCOM : public IComparable
{
public:
    AnotherClassUsableViaCOM() 
    { 
    }

    virtual int CompareTo(Object^ o) = IComparable::CompareTo
    {
        return 0;
    }
};
using System;
using System.Runtime.InteropServices;

// Have the CLR expose a class interface (derived from IDispatch) for this type.
// COM clients can call the  members of this class using the Invoke method from the IDispatch interface.
[ClassInterface(ClassInterfaceType.AutoDispatch)]
public class AClassUsableViaCOM
{
    public AClassUsableViaCOM() { }

    public Int32 Add(Int32 x, Int32 y) { return x + y; }
}

// The CLR does not expose a class interface for this type.
// COM clients can call the members of this class using the methods from the IComparable interface.
[ClassInterface(ClassInterfaceType.None)]
public class AnotherClassUsableViaCOM : IComparable
{
    public AnotherClassUsableViaCOM() { }

    Int32 IComparable.CompareTo(Object o) { return 0; }
}
Imports System.Runtime.InteropServices


' Have the CLR expose a class interface (derived from IDispatch) for this type.
' COM clients can call the  members of this class using the Invoke method from the IDispatch interface.
<ClassInterface(ClassInterfaceType.AutoDispatch)> _
Public Class AClassUsableViaCOM

    Public Sub New()

    End Sub

    Public Function Add(ByVal x As Int32, ByVal y As Int32) As Int32
        Return x + y

    End Function
End Class
' The CLR does not expose a class interface for this type.
' COM clients can call the members of this class using the methods from the IComparable interface.
<ClassInterface(ClassInterfaceType.None)> _
Public Class AnotherClassUsableViaCOM
    Implements IComparable

    Public Sub New()

    End Sub

    Function CompareTo(ByVal o As [Object]) As Int32 Implements IComparable.CompareTo
        Return 0

    End Function 'IComparable.CompareTo
End Class

Remarques

Cette énumération est utilisée conjointement avec l’attribut ClassInterfaceAttribute .

S’applique à

Voir aussi