Udostępnij za pośrednictwem


ComVisibleAttribute Klasa

Definicja

Steruje ułatwieniami dostępu poszczególnych typów zarządzanych lub składowych lub wszystkich typów w zestawie do modelu 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
Dziedziczenie
ComVisibleAttribute
Atrybuty

Przykłady

W poniższym przykładzie pokazano, jak można kontrolować widoczność do modelu COM klasy, aby jego składowe nie są niewidoczne. Ustawiając wartość falseComVisibleAttribute na włączone MyClass(SampleClassw przykładzie języka Visual Basic) i false w systemach MyMethod i MyPropertymożna uniknąć przypadkowo uwidaczniania elementów członkowskich do modelu COM przez dziedziczenie.

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

Uwagi

Ten atrybut można zastosować do zestawów, interfejsów, klas, struktur, delegatów, wyliczenia, pól, metod, akcesorów zdarzeń lub właściwości.

Wartość domyślna to true, która wskazuje, że typ zarządzany jest widoczny dla modelu COM. Ten atrybut nie jest potrzebny do udostępniania publicznych zestawów i typów zarządzanych; są one domyślnie widoczne dla modelu COM. Widoczne mogą być tylko public typy. Nie można użyć atrybutu , aby w inny sposób internal lub protected typ był widoczny dla modelu COM lub aby elementy członkowskie nienadzornego typu były widoczne.

Ustawienie atrybutu na false wartość w zestawie powoduje ukrycie wszystkich public typów w zestawie. Można selektywnie tworzyć typy w zestawie, ustawiając poszczególne typy na true. Ustawienie atrybutu na false określony typ powoduje ukrycie tego typu i jego elementów członkowskich. Nie można jednak ustawić elementów członkowskich typu widocznego, jeśli typ jest niewidoczny. Ustawienie atrybutu na false typ uniemożliwia eksportowanie tego typu do biblioteki typów; klasy nie są zarejestrowane; interfejsy nigdy nie reagują na niezarządzane QueryInterface wywołania.

Chyba że jawnie ustawisz klasę i jej składowe na false, dziedziczone klasy mogą być narażone na składowe klasy bazowej COM, które są niewidoczne w oryginalnej klasie. Jeśli na przykład ustawisz wartość ClassA false i nie zastosujesz atrybutu do jego składowych, klasa i jego składowe są niewidoczne dla modelu COM. Jeśli jednak utworzysz klasę ClassB z klasy ClassA i wyeksportowasz klasę CLASSB do modelu COM, składowe klasy ClassA staną się widocznymi elementami członkowskimi klasy bazowej ClassB.

Aby uzyskać szczegółowy opis procesu eksportowania, zobacz Podsumowanie konwersji zestawu do biblioteki typów.

Konstruktory

ComVisibleAttribute(Boolean)

Inicjuje nowe wystąpienie klasy ComVisibleAttribute.

Właściwości

TypeId

Po zaimplementowaniu w klasie pochodnej pobiera unikatowy identyfikator dla tego elementu Attribute.

(Odziedziczone po Attribute)
Value

Pobiera wartość wskazującą, czy typ COM jest widoczny.

Metody

Equals(Object)

Zwraca wartość wskazującą, czy to wystąpienie jest równe podanemu obiektowi.

(Odziedziczone po Attribute)
GetHashCode()

Zwraca wartość skrótu dla tego wystąpienia.

(Odziedziczone po Attribute)
GetType()

Type Pobiera bieżące wystąpienie.

(Odziedziczone po Object)
IsDefaultAttribute()

W przypadku zastąpienia w klasie pochodnej wskazuje, czy wartość tego wystąpienia jest wartością domyślną klasy pochodnej.

(Odziedziczone po Attribute)
Match(Object)

W przypadku zastąpienia w klasie pochodnej zwraca wartość wskazującą, czy to wystąpienie jest równe określonemu obiektowi.

(Odziedziczone po Attribute)
MemberwiseClone()

Tworzy płytkią kopię bieżącego Objectelementu .

(Odziedziczone po Object)
ToString()

Zwraca ciąg reprezentujący bieżący obiekt.

(Odziedziczone po Object)

Jawne implementacje interfejsu

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

Zestaw nazw jest mapowany na odpowiedni zestaw identyfikatorów wysyłania.

(Odziedziczone po Attribute)
_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr)

Pobiera informacje o typie obiektu, którego można użyć do pobrania informacji o typie interfejsu.

(Odziedziczone po Attribute)
_Attribute.GetTypeInfoCount(UInt32)

Pobiera informację o liczbie typów interfejsów, jakie zawiera obiekt (0 lub 1).

(Odziedziczone po Attribute)
_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr)

Umożliwia dostęp do właściwości i metod udostępnianych przez obiekt.

(Odziedziczone po Attribute)

Dotyczy

Zobacz też