Partager via


ComVisibleAttribute Classe

Définition

Contrôle l’accessibilité d’un type managé ou d’un membre individuel, ou de tous les types au sein d’un assembly, à COM.

public ref class ComVisibleAttribute sealed : Attribute
[System.AttributeUsage(System.AttributeTargets.Assembly | System.AttributeTargets.Class | System.AttributeTargets.Delegate | System.AttributeTargets.Enum | System.AttributeTargets.Field | System.AttributeTargets.Interface | System.AttributeTargets.Method | System.AttributeTargets.Property | System.AttributeTargets.Struct, Inherited=false)]
public sealed class ComVisibleAttribute : Attribute
[System.AttributeUsage(System.AttributeTargets.Assembly | System.AttributeTargets.Class | System.AttributeTargets.Delegate | System.AttributeTargets.Enum | System.AttributeTargets.Field | System.AttributeTargets.Interface | System.AttributeTargets.Method | System.AttributeTargets.Property | System.AttributeTargets.Struct, Inherited=false)]
[System.Runtime.InteropServices.ComVisible(true)]
public sealed class ComVisibleAttribute : Attribute
[<System.AttributeUsage(System.AttributeTargets.Assembly | System.AttributeTargets.Class | System.AttributeTargets.Delegate | System.AttributeTargets.Enum | System.AttributeTargets.Field | System.AttributeTargets.Interface | System.AttributeTargets.Method | System.AttributeTargets.Property | System.AttributeTargets.Struct, Inherited=false)>]
type ComVisibleAttribute = class
    inherit Attribute
[<System.AttributeUsage(System.AttributeTargets.Assembly | System.AttributeTargets.Class | System.AttributeTargets.Delegate | System.AttributeTargets.Enum | System.AttributeTargets.Field | System.AttributeTargets.Interface | System.AttributeTargets.Method | System.AttributeTargets.Property | System.AttributeTargets.Struct, Inherited=false)>]
[<System.Runtime.InteropServices.ComVisible(true)>]
type ComVisibleAttribute = class
    inherit Attribute
Public NotInheritable Class ComVisibleAttribute
Inherits Attribute
Héritage
ComVisibleAttribute
Attributs

Exemples

L’exemple suivant montre comment contrôler la visibilité sur COM d’une classe afin que ses membres soient invisibles. En définissant ComVisibleAttribute sur false sur MyClass(SampleClass dans l’exemple de Visual Basic), et false sur MyMethod et MyProperty, vous pouvez éviter d’exposer par inadvertance les membres à COM via l’héritage.

using namespace System::Runtime::InteropServices;

[ComVisible(false)]
ref class MyClass
{
private:
   int myProperty;

public:
   MyClass()
   {
      
      //Insert code here.
   }


   [ComVisible(false)]
   int MyMethod( String^ param )
   {
      return 0;
   }

   bool MyOtherMethod()
   {
      return true;
   }


   property int MyProperty 
   {

      [ComVisible(false)]
      int get()
      {
         return myProperty;
      }

   }

};
using System.Runtime.InteropServices;

[ComVisible(false)]
class MyClass
{
   public MyClass()
   {
      //Insert code here.
   }

   [ComVisible(false)]
   public int MyMethod(string param)
   {
      return 0;
   }

   public bool MyOtherMethod()
   {
      return true;
   }

   [ComVisible(false)]
   public int MyProperty
   {
      get
      {
         return MyProperty;
      }
   }
}
Imports System.Runtime.InteropServices

<ComVisible(False)> _
Class SampleClass
    
    Public Sub New()
        'Insert code here.
    End Sub
    
    <ComVisible(False)> _
    Public Function MyMethod(param As String) As Integer
        Return 0
    End Function    
    
    Public Function MyOtherMethod() As Boolean
        Return True
    End Function
    
    <ComVisible(False)> _
    Public ReadOnly Property MyProperty() As Integer
        Get
            Return MyProperty
        End Get
    End Property
    
End Class

Remarques

Vous pouvez appliquer cet attribut aux assemblys, interfaces, classes, structures, délégués, énumérations, champs, méthodes, accesseurs d’événements ou propriétés.

La valeur par défaut est true, ce qui indique que le type managé est visible par COM. Cet attribut n’est pas nécessaire pour rendre les assemblys et types managés publics visibles ; elles sont visibles par défaut par COM. Seuls les public types peuvent être rendus visibles. L’attribut ne peut pas être utilisé pour rendre un autre internal type visible par COM ou protected pour rendre les membres d’un type non visible.

La définition de l’attribut false sur l’assembly masque tous les public types au sein de l’assembly. Vous pouvez rendre sélectivement les types dans l’assembly visibles en définissant les types trueindividuels sur . La définition de l’attribut false sur un type spécifique masque ce type et ses membres. Toutefois, vous ne pouvez pas rendre les membres d’un type visibles si le type est invisible. La définition de l’attribut false sur un type empêche l’exportation de ce type vers une bibliothèque de types ; les classes ne sont pas inscrites ; les interfaces ne sont jamais réactives aux appels non managés QueryInterface .

Sauf si vous définissez explicitement une classe et ses membres falsesur , les classes héritées peuvent exposer aux membres de classe de base COM qui sont invisibles dans la classe d’origine. Par exemple, si vous définissez ClassA false sur et que vous n’appliquez pas l’attribut à ses membres, la classe et ses membres sont invisibles pour COM. Toutefois, si vous dérivez ClassB de ClassA et exportez ClassB vers COM, les membres ClassA deviennent des membres de classe de base visibles de ClassB.

Constructeurs

Nom Description
ComVisibleAttribute(Boolean)

Initialise une nouvelle instance de la classe ComVisibleAttribute.

Propriétés

Nom Description
TypeId

En cas d’implémentation dans une classe dérivée, obtient un identificateur unique pour cette Attribute.

(Hérité de Attribute)
Value

Obtient une valeur qui indique si le type COM est visible.

Méthodes

Nom Description
Equals(Object)

Retourne une valeur qui indique si cette instance est égale à un objet spécifié.

(Hérité de Attribute)
GetHashCode()

Retourne le code de hachage pour cette instance.

(Hérité de Attribute)
GetType()

Obtient la Type de l’instance actuelle.

(Hérité de Object)
IsDefaultAttribute()

En cas de substitution dans une classe dérivée, indique si la valeur de cette instance est la valeur par défaut de la classe dérivée.

(Hérité de Attribute)
Match(Object)

En cas de substitution dans une classe dérivée, retourne une valeur qui indique si cette instance est égale à un objet spécifié.

(Hérité de Attribute)
MemberwiseClone()

Crée une copie superficielle du Objectactuel.

(Hérité de Object)
ToString()

Retourne une chaîne qui représente l’objet actuel.

(Hérité de Object)

Implémentations d’interfaces explicites

Nom Description
_Attribute.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr)

Mappe un jeu de noms avec un jeu correspondant d'identificateurs de dispatch.

(Hérité de Attribute)
_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr)

Récupère les informations de type d’un objet, qui peuvent être utilisées pour obtenir les informations de type d’une interface.

(Hérité de Attribute)
_Attribute.GetTypeInfoCount(UInt32)

Récupère le nombre d'interfaces d'informations de type fourni par un objet (0 ou 1).

(Hérité de Attribute)
_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr)

Fournit l’accès aux propriétés et méthodes exposées par un objet.

(Hérité de Attribute)

S’applique à

Voir aussi