Compartilhar via


Classe ComVisibleAttribute

 

Dica

The .NET API Reference documentation has a new home. Visit the .NET API Browser on docs.microsoft.com to see the new experience.

Controla a acessibilidade de um tipo gerenciado individual ou membro, ou então de todos os tipos em um assembly, ao COM.

Namespace:   System.Runtime.InteropServices
Assembly:  mscorlib (em mscorlib.dll)

Hierarquia de Herança

System.Object
  System.Attribute
    System.Runtime.InteropServices.ComVisibleAttribute

Sintaxe

[AttributeUsageAttribute(AttributeTargets.Assembly | AttributeTargets.Class | AttributeTargets.Struct | AttributeTargets.Enum | AttributeTargets.Method | AttributeTargets.Property | AttributeTargets.Field | AttributeTargets.Interface | AttributeTargets.Delegate, 
    Inherited = false)]
[ComVisibleAttribute(true)]
public sealed class ComVisibleAttribute : Attribute
[AttributeUsageAttribute(AttributeTargets::Assembly | AttributeTargets::Class | AttributeTargets::Struct | AttributeTargets::Enum | AttributeTargets::Method | AttributeTargets::Property | AttributeTargets::Field | AttributeTargets::Interface | AttributeTargets::Delegate, 
    Inherited = false)]
[ComVisibleAttribute(true)]
public ref class ComVisibleAttribute sealed : Attribute
[<Sealed>]
[<AttributeUsageAttribute(AttributeTargets.Assembly | AttributeTargets.Class | AttributeTargets.Struct | AttributeTargets.Enum | AttributeTargets.Method | AttributeTargets.Property | AttributeTargets.Field | AttributeTargets.Interface | AttributeTargets.Delegate,
    Inherited = false)>]
[<ComVisibleAttribute(true)>]
type ComVisibleAttribute = 
    class
        inherit Attribute
    end
<AttributeUsageAttribute(AttributeTargets.Assembly Or AttributeTargets.Class Or AttributeTargets.Struct Or AttributeTargets.Enum Or AttributeTargets.Method Or AttributeTargets.Property Or AttributeTargets.Field Or AttributeTargets.Interface Or AttributeTargets.Delegate,
    Inherited := False)>
<ComVisibleAttribute(True)>
Public NotInheritable Class ComVisibleAttribute
    Inherits Attribute

Construtores

Nome Descrição
System_CAPS_pubmethod ComVisibleAttribute(Boolean)

Inicializa uma nova instância da classe ComVisibleAttribute.

Propriedades

Nome Descrição
System_CAPS_pubproperty TypeId

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

System_CAPS_pubproperty Value

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

Métodos

Nome Descrição
System_CAPS_pubmethod Equals(Object)

Esta API dá suporte à infraestrutura produto e não se destina a ser usada diretamente do seu código. Retorna um valor que indica se essa instância é igual a um objeto especificado.(Herdado de Attribute.)

System_CAPS_pubmethod GetHashCode()

Retorna o código hash para essa instância.(Herdado de Attribute.)

System_CAPS_pubmethod GetType()

Obtém o Type da instância atual.(Herdado de Object.)

System_CAPS_pubmethod 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.)

System_CAPS_pubmethod 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.)

System_CAPS_pubmethod ToString()

Retorna uma cadeia de caracteres que representa o objeto atual.(Herdado de Object.)

Implementações Explícitas da Interface

Nome Descrição
System_CAPS_pubinterfaceSystem_CAPS_privmethod _Attribute.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr)

Mapeia um conjunto de nomes para um conjunto correspondente de identificadores de expedição.(Herdado de Attribute.)

System_CAPS_pubinterfaceSystem_CAPS_privmethod _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.)

System_CAPS_pubinterfaceSystem_CAPS_privmethod _Attribute.GetTypeInfoCount(UInt32)

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

System_CAPS_pubinterfaceSystem_CAPS_privmethod _Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr)

Fornece acesso a propriedades e métodos expostos por um objeto.(Herdado de Attribute.)

Comentários

Você pode aplicar esse atributo para assemblies, interfaces, classes, estruturas, representantes, enumerações, campos, métodos ou propriedades.

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

Definindo o atributo para false no assembly oculta todos public tipos no assembly. Você pode fazer seletivamente tipos no assembly visível definindo tipos individuais, como true. Definindo o atributo para false em um tipo específico oculta o tipo e seus membros. No entanto, os membros de um tipo não é possível tornar visível se o tipo é invisível. Definindo o atributo para false em um tipo impede que esse tipo que está sendo exportado para uma biblioteca de tipos, classes não são registradas; interfaces nunca estão respondendo gerenciado para QueryInterface chamadas.

A menos que você definir explicitamente uma classe e seus membros para false, herdados classes podem expor a membros de classe base COM invisíveis na classe original. Por exemplo, se você definir ClassA como false e não aplica o atributo a seus membros, a classe e seus membros são visíveis para COM. No entanto, se você deriva ClassB ClassA e exporta ClassB ao COM, ClassA membros se tornam membros visíveis de classe base ClassB.

Para obter uma descrição detalhada do processo de exportação, consulte Assembly para o resumo da conversão do tipo de biblioteca.

Exemplos

O exemplo a seguir mostra como você pode controlar a visibilidade de COM de uma classe para que seus membros estão invisíveis. Definindo ComVisibleAttribute para false na MyClass(SampleClass o exemplo do Visual Basic), e false na MyMethod e MyProperty, você pode evitar inadvertidamente expor os membros COM através de herança.

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
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;
      }

   }

};

Informações de Versão

Plataforma Universal do Windows
Disponível desde 8
.NET Framework
Disponível desde 1.1
Biblioteca de Classes Portátil
Com suporte no: plataformas portáteis do .NET
Silverlight
Disponível desde 2.0
Windows Phone Silverlight
Disponível desde 7.0
Windows Phone
Disponível desde 8.1

Acesso thread-safe

Quaisquer membros estáticos públicos ( Compartilhado no Visual Basic) desse tipo são thread-safe. Não há garantia de que qualquer membro de instância seja thread-safe.

Confira Também

Namespace System.Runtime.InteropServices
Tlbexp.exe (Exportador de Biblioteca de Tipos)
Resumo da conversão de assemblies em bibliotecas de tipos

Retornar ao início