ComVisibleAttribute-Klasse

Steuert den Zugriff eines einzelnen verwalteten Typs bzw. Members oder aller Typen in einer Assembly auf COM.

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

Syntax

'Declaration
<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
'Usage
Dim instance As ComVisibleAttribute
[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 : public Attribute
/** @attribute AttributeUsageAttribute(AttributeTargets.Assembly|AttributeTargets.Class|AttributeTargets.Struct|AttributeTargets.Enum|AttributeTargets.Method|AttributeTargets.Property|AttributeTargets.Field|AttributeTargets.Interface|AttributeTargets.Delegate, Inherited=false) */ 
/** @attribute ComVisibleAttribute(true) */ 
public final class ComVisibleAttribute extends 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 final class ComVisibleAttribute extends Attribute

Hinweise

Sie können dieses Attribut auf Assemblys, Schnittstellen, Klassen, Strukturen, Delegaten, Enumerationen, Felder, Methoden und Eigenschaften anwenden.

Der Standardwert ist true und gibt an, dass der verwaltete Typ für COM sichtbar ist. Dieses Attribut ist zum Anzeigen von öffentlichen verwalteten Assemblys und Typen nicht erforderlich, da diese standardmäßig für COM sichtbar sind. Nur public-Typen können sichtbar gemacht werden. Mithilfe dieses Attributs kann ein sonstiger internal-Typ oder protected-Typ für COM nicht sichtbar gemacht werden, ebenso können Member eines nicht sichtbaren Typs nicht sichtbar gemacht werden.

Wenn Sie das Attribut für die Assembly auf false festlegen, werden alle public-Typen in der Assembly ausgeblendet. Sie können Typen in der Assembly selektiv sichtbar machen, indem Sie die einzelnen Typen auf true festlegen. Wenn das Attribut für einen bestimmten Typ auf false festgelegt wird, werden der betreffende Typ und seine Member verborgen. Member eines Typs können jedoch nicht sichtbar gemacht werden, wenn der Typ nicht sichtbar ist. Durch Festlegen des Attributs für einen Typ auf false wird verhindert, dass der betreffende Typ in eine Typbibliothek exportiert wird, Klassen werden nicht registriert, und Schnittstellen reagieren nicht auf nicht verwaltete QueryInterface-Aufrufe.

Wenn eine Klasse und ihre Member nicht explizit auf false festgelegt werden, können geerbte Klassen Basisklassenmember für COM verfügbar machen, die in der ursprünglichen Klasse nicht sichtbar sind. Wenn Sie beispielsweise ClassA auf false festlegen und das Attribut nicht auf ihre Member anwenden, sind die Klasse und ihre Member für COM nicht sichtbar. Wenn Sie jedoch ClassB von ClassA ableiten und ClassB nach COM exportieren, werden ClassA-Member sichtbare Basisklassenmember von ClassB.

Eine ausführliche Beschreibung des Exportvorgangs finden Sie unter Zusammenfassung: Konvertieren einer Assembly in eine Typbibliothek.

Beispiel

Das folgende Beispiel veranschaulicht, wie Sie die Sichtbarkeit einer Klasse für COM so steuern können, dass ihre Member nicht sichtbar sind. Indem Sie ComVisibleAttribute für MyClass auf false festlegen und außerdem MyMethod sowie MyProperty auf false festlegen, können Sie das unbeabsichtigte Verfügbarmachen der Member für COM durch Vererbung vermeiden.

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

   }

};
import System.Runtime.InteropServices.*;

/** @attribute ComVisible(false)
 */
class MyClass
{
    public MyClass()
    {
        //Insert code here.
    } //MyClass
   
    /** @attribute ComVisible(false)
     */
    public int MyMethod(String param)
    {
        return 0;
    } //MyMethod

    public boolean MyOtherMethod()
    {
        return true;
    } //MyOtherMethod

    /** @attribute ComVisible(false)
     */
    /** @property 
     */
    public int get_MyProperty()
    {
        return get_MyProperty();
    }//get_MyProperty
} //MyClass
import System.Runtime.InteropServices;

ComVisible(false) class MyClass
{
   public function MyClass()
   {
      //Insert code here.
   }
   
   ComVisible(false) public function MyMethod(param : String) : int 
   {
      return 0;
   }

   public function MyOtherMethod() : boolean
   {
      return true;
   }

   ComVisible(false) public function get MyProperty() : int 
   {
       return MyProperty;
   }
}

Vererbungshierarchie

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

Threadsicherheit

Alle öffentlichen statischen (Shared in Visual Basic) Member dieses Typs sind threadsicher. Bei Instanzmembern ist die Threadsicherheit nicht gewährleistet.

Plattformen

Windows 98, Windows 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile für Pocket PC, Windows Mobile für Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition

.NET Framework unterstützt nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen.

Versionsinformationen

.NET Framework

Unterstützt in: 2.0, 1.1, 1.0

.NET Compact Framework

Unterstützt in: 2.0, 1.0

Siehe auch

Referenz

ComVisibleAttribute-Member
System.Runtime.InteropServices-Namespace

Weitere Ressourcen

Type Library Exporter-Tool (Tlbexp.exe)
Zusammenfassung: Konvertieren einer Assembly in eine Typbibliothek