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