ComVisibleAttribute Classe

Definizione

Controlla l'accessibilità di un singolo tipo gestito o un membro, oppure di tutti i tipi all'interno di un assembly, a COM.Controls accessibility of an individual managed type or member, or of all types within an assembly, to 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.Runtime.InteropServices.ComVisible(true)]
[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
type ComVisibleAttribute = class
    inherit Attribute
Public NotInheritable Class ComVisibleAttribute
Inherits Attribute
Ereditarietà
ComVisibleAttribute
Attributi

Esempi

Nell'esempio seguente viene illustrato come è possibile controllare la visibilità a COM di una classe in modo che i relativi membri siano invisibili.The following example shows how you can control the visibility to COM of a class so that its members are invisible. Impostando ComVisibleAttribute su false su MyClass(SampleClass nell'esempio Visual Basic) e false in MyMethod e MyProperty, è possibile evitare di esporre inavvertitamente i membri a COM attraverso l'ereditarietà.By setting ComVisibleAttribute to false on MyClass(SampleClass in the Visual Basic example), and false on MyMethod and MyProperty, you can avoid inadvertently exposing the members to COM through inheritance.

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

Commenti

È possibile applicare questo attributo a assembly, interfacce, classi, strutture, delegati, enumerazioni, campi, metodi o proprietà.You can apply this attribute to assemblies, interfaces, classes, structures, delegates, enumerations, fields, methods, or properties.

Il valore predefinito è true, che indica che il tipo gestito è visibile a COM.The default is true, which indicates that the managed type is visible to COM. Questo attributo non è necessario per rendere visibili gli assembly e i tipi gestiti pubblici; sono visibili a COM per impostazione predefinita.This attribute is not needed to make public managed assemblies and types visible; they are visible to COM by default. È possibile rendere visibili solo i tipi di public.Only public types can be made visible. L'attributo non può essere usato per rendere un tipo altrimenti internal o protected visibile a COM o per rendere visibili i membri di un tipo non visibile.The attribute cannot be used to make an otherwise internal or protected type visible to COM or to make members of a nonvisible type visible.

Impostando l'attributo su false nell'assembly vengono nascosti tutti i tipi di public all'interno dell'assembly.Setting the attribute to false on the assembly hides all public types within the assembly. È possibile rendere i tipi all'interno dell'assembly visibili in modo selettivo impostando i singoli tipi su true.You can selectively make types within the assembly visible by setting the individual types to true. Se si imposta l'attributo su false per un tipo specifico, il tipo e i relativi membri vengono nascosti.Setting the attribute to false on a specific type hides that type and its members. Tuttavia, non è possibile rendere visibili i membri di un tipo se il tipo è invisibile.However, you cannot make members of a type visible if the type is invisible. Se si imposta l'attributo su false su un tipo, il tipo non viene esportato in una libreria dei tipi. classi non registrate. le interfacce non rispondono mai alle chiamate QueryInterface non gestite.Setting the attribute to false on a type prevents that type from being exported to a type library; classes are not registered; interfaces are never responsive to unmanaged QueryInterface calls.

A meno che non si imposti in modo esplicito una classe e i relativi membri su false, le classi ereditate possono esporre ai membri della classe base COM che sono invisibili nella classe originale.Unless you explicitly set a class and its members to false, inherited classes can expose to COM base class members that are invisible in the original class. Se, ad esempio, si imposta ClassA su false e non si applica l'attributo ai relativi membri, la classe e i relativi membri non saranno visibili a COM.For example, if you set ClassA to false and do not apply the attribute to its members, the class and its members are invisible to COM. Tuttavia, se si derivano ClassB da ClassA e si esporta ClassB in COM, i membri di ClassA diventano visibili membri della classe base di ClassB.However, if you derive ClassB from ClassA and export ClassB to COM, ClassA members become visible base class members of ClassB.

Per una descrizione dettagliata del processo di esportazione, vedere Riepilogo della conversione da assembly a libreria dei tipi.For a detailed description of the export process, see Assembly to Type Library Conversion Summary.

Costruttori

ComVisibleAttribute(Boolean)

Inizializza una nuova istanza della classe ComVisibleAttribute.Initializes a new instance of the ComVisibleAttribute class.

Proprietà

TypeId

Quando è implementata in una classe derivata, ottiene un identificatore univoco della classe Attribute.When implemented in a derived class, gets a unique identifier for this Attribute.

(Ereditato da Attribute)
Value

Ottiene un valore che indica se il tipo COM è visibile.Gets a value that indicates whether the COM type is visible.

Metodi

Equals(Object)

Restituisce un valore che indica se questa istanza è uguale a un oggetto specificato.Returns a value that indicates whether this instance is equal to a specified object.

(Ereditato da Attribute)
GetHashCode()

Restituisce il codice hash per l'istanza.Returns the hash code for this instance.

(Ereditato da Attribute)
GetType()

Ottiene l'oggetto Type dell'istanza corrente.Gets the Type of the current instance.

(Ereditato da Object)
IsDefaultAttribute()

In caso di override in una classe derivata, indica se il valore di questa istanza è il valore predefinito per la classe derivata.When overridden in a derived class, indicates whether the value of this instance is the default value for the derived class.

(Ereditato da Attribute)
Match(Object)

Quando è sottoposto a override in una classe derivata, restituisce un valore che indica se questa istanza equivale a un oggetto specificato.When overridden in a derived class, returns a value that indicates whether this instance equals a specified object.

(Ereditato da Attribute)
MemberwiseClone()

Crea una copia superficiale dell'oggetto Object corrente.Creates a shallow copy of the current Object.

(Ereditato da Object)
ToString()

Restituisce una stringa che rappresenta l'oggetto corrente.Returns a string that represents the current object.

(Ereditato da Object)

Implementazioni dell'interfaccia esplicita

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

Esegue il mapping di un set di nomi a un set corrispondente di ID dispatch.Maps a set of names to a corresponding set of dispatch identifiers.

(Ereditato da Attribute)
_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr)

Recupera le informazioni sul tipo relative a un oggetto, che possono essere usate per ottenere informazioni sul tipo relative a un'interfaccia.Retrieves the type information for an object, which can be used to get the type information for an interface.

(Ereditato da Attribute)
_Attribute.GetTypeInfoCount(UInt32)

Recupera il numero delle interfacce di informazioni sul tipo fornite da un oggetto (0 o 1).Retrieves the number of type information interfaces that an object provides (either 0 or 1).

(Ereditato da Attribute)
_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr)

Fornisce l'accesso a proprietà e metodi esposti da un oggetto.Provides access to properties and methods exposed by an object.

(Ereditato da Attribute)

Si applica a

Vedi anche