Compartilhar via


ComVisibleAttribute Classe

Definição

Controla a acessibilidade de um tipo gerenciado individual ou membro, ou então de todos os tipos em um assembly, ao 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
Herança
ComVisibleAttribute
Atributos

Exemplos

O exemplo a seguir mostra como você pode controlar a visibilidade para COM de uma classe para que seus membros sejam invisíveis. Ao definir ComVisibleAttribute como false em MyClass(SampleClass no exemplo do Visual Basic) e false em MyMethod e MyProperty, você pode evitar expor inadvertidamente os membros ao COM por meio da herança.

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

Comentários

Você pode aplicar esse atributo a assemblies, interfaces, classes, estruturas, delegados, enumerações, campos, métodos, acessadores de eventos ou propriedades.

O padrão é true, que indica que o tipo gerenciado está visível para COM. Esse atributo não é necessário para tornar visíveis assemblies e tipos gerenciados públicos; eles são visíveis para COM por padrão. Somente public os tipos podem ficar visíveis. O atributo não pode ser usado para tornar um tipo ou de protected outra forma internal visível para COM ou para tornar os membros de um tipo não visual visível.

Definir o atributo como false no assembly oculta todos os public tipos dentro do assembly. Você pode tornar seletivamente os tipos dentro do assembly visíveis definindo os tipos individuais como true. Definir o atributo como false em um tipo específico oculta esse tipo e seus membros. No entanto, você não poderá tornar os membros de um tipo visíveis se o tipo for invisível. Definir o atributo false como em um tipo impede que esse tipo seja exportado para uma biblioteca de tipos; as classes não são registradas; as interfaces nunca respondem a chamadas não gerenciadas QueryInterface .

A menos que você defina explicitamente uma classe e seus membros como false, as classes herdadas podem expor aos membros da classe base COM que são invisíveis na classe original. Por exemplo, se você definir ClassA false como e não aplicar o atributo a seus membros, a classe e seus membros serão invisíveis para COM. No entanto, se você derivar ClassB de ClassA e exportar ClassB para COM, os membros da Classe A se tornarão membros visíveis da classe base de ClassB.

Para obter uma descrição detalhada do processo de exportação, consulte Resumo da conversão de assembly para biblioteca de tipos.

Construtores

ComVisibleAttribute(Boolean)

Inicializa uma nova instância da classe ComVisibleAttribute.

Propriedades

TypeId

Quando implementado em uma classe derivada, obtém um identificador exclusivo para este Attribute.

(Herdado de Attribute)
Value

Obtém um valor que indica se o tipo COM está visível.

Métodos

Equals(Object)

Retorna um valor que indica se essa instância é igual a um objeto especificado.

(Herdado de Attribute)
GetHashCode()

Retorna o código hash para a instância.

(Herdado de Attribute)
GetType()

Obtém o Type da instância atual.

(Herdado de Object)
IsDefaultAttribute()

Quando substituído em uma classe derivada, indica se o valor dessa instância é o valor padrão para a classe derivada.

(Herdado de Attribute)
Match(Object)

Quando substituído em uma classe derivada, retorna um valor que indica se essa instância é igual a um objeto especificado.

(Herdado de Attribute)
MemberwiseClone()

Cria uma cópia superficial do Object atual.

(Herdado de Object)
ToString()

Retorna uma cadeia de caracteres que representa o objeto atual.

(Herdado de Object)

Implantações explícitas de interface

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

Mapeia um conjunto de nomes para um conjunto correspondente de identificadores de expedição.

(Herdado de Attribute)
_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr)

Recupera as informações de tipo para um objeto, que pode ser usado para obter as informações de tipo para uma interface.

(Herdado de Attribute)
_Attribute.GetTypeInfoCount(UInt32)

Retorna o número de interfaces de informações do tipo que um objeto fornece (0 ou 1).

(Herdado de Attribute)
_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr)

Fornece acesso a propriedades e métodos expostos por um objeto.

(Herdado de Attribute)

Aplica-se a

Confira também