ClassInterfaceAttribute Klas

Definitie

Geeft het type klasse-interface aan dat moet worden gegenereerd voor een klasse die wordt blootgesteld aan COM, als er helemaal een interface wordt gegenereerd.

public ref class ClassInterfaceAttribute sealed : Attribute
[System.AttributeUsage(System.AttributeTargets.Assembly | System.AttributeTargets.Class, Inherited=false)]
public sealed class ClassInterfaceAttribute : Attribute
[System.AttributeUsage(System.AttributeTargets.Assembly | System.AttributeTargets.Class, Inherited=false)]
[System.Runtime.InteropServices.ComVisible(true)]
public sealed class ClassInterfaceAttribute : Attribute
[<System.AttributeUsage(System.AttributeTargets.Assembly | System.AttributeTargets.Class, Inherited=false)>]
type ClassInterfaceAttribute = class
    inherit Attribute
[<System.AttributeUsage(System.AttributeTargets.Assembly | System.AttributeTargets.Class, Inherited=false)>]
[<System.Runtime.InteropServices.ComVisible(true)>]
type ClassInterfaceAttribute = class
    inherit Attribute
Public NotInheritable Class ClassInterfaceAttribute
Inherits Attribute
Overname
ClassInterfaceAttribute
Kenmerken

Voorbeelden

In het volgende voorbeeld ziet u hoe u de ClassInterfaceAttribute met de ClassInterfaceType waarde AutoDispatchtoepast, waarmee een IDispatch interface voor MyClasswordt gegenereerd.

using namespace System::Runtime::InteropServices;

[ClassInterface(ClassInterfaceType::AutoDispatch)]
public ref class MyClass
{
public:
   MyClass(){}

};
using System.Runtime.InteropServices;

[ClassInterface(ClassInterfaceType.AutoDispatch)]
public class MyClass
{
   public MyClass() {}
}
Imports System.Runtime.InteropServices

<ClassInterface(ClassInterfaceType.AutoDispatch)> _
Public Class SampleClass    
    ' Insert class members here.
End Class

Opmerkingen

U kunt dit kenmerk toepassen op assembly's of klassen.

Dit kenmerk bepaalt of de typebibliotheekexporteur (Tlbexp.exe) automatisch een klasse-interface genereert voor de toegewezen klasse. Een klasse-interface heeft dezelfde naam als de klasse zelf, maar de naam wordt voorafgegaan door een onderstrepingsteken. Wanneer deze beschikbaar is, bevat de klasse-interface alle public, niet-leden static van de beheerde klasse, inclusief leden die zijn overgenomen van de basisklasse. Beheerde klassen hebben geen toegang tot een klasse-interface en hebben geen behoefte omdat ze rechtstreeks toegang hebben tot de klasseleden. Tlbexp.exe genereert een unieke interface-id (IID) voor de klasse-interface.

Klasse-interfaces kunnen dual- of dispatch-only interfaces zijn. U kunt desgewenst de generatie van de klasse-interface onderdrukken en in plaats daarvan een aangepaste interface bieden. U stelt een klasse-interface beschikbaar of onderdrukt door een System.Runtime.InteropServices.ClassInterfaceType opsommingslid op te geven. Wanneer u van toepassing bent op ClassInterfaceAttribute een assembly, heeft het kenmerk betrekking op alle klassen in de assembly, tenzij de afzonderlijke klassen de instelling overschrijven met hun eigen kenmerk.

Hoewel klasse-interfaces de taak van het expliciet definiëren van interfaces voor elke klasse elimineren, wordt het gebruik ervan in productietoepassingen sterk afgeraden. Met interfaces met twee klassen kunnen clients verbinding maken met een specifieke interface-indeling die kan worden gewijzigd naarmate de klasse zich ontwikkelt. Denk bijvoorbeeld aan een beheerde klasse die een klasse-interface beschikbaar maakt voor COM-clients. De eerste versie van de klasse bevat methoden North en South. Een niet-beheerde client kan worden verbonden met de klasse-interface, die als de eerste methode in de klasse-interface en -methode als de tweede methode South biedtNorth. Overweeg nu de volgende versie van de klasse, die een nieuwe methode heeft, Eastingevoegd tussen methoden North en South. Niet-beheerde clients die proberen verbinding te maken met de nieuwe klasse via de oude klasse-interface, eindigen bij het aanroepen van methode East wanneer ze methode Southwillen aanroepen, omdat de plaatsing van methoden in de interface is gewijzigd. Bovendien is elke wijziging in de indeling van een basisklasse ook van invloed op de indeling van de klasse-interface voor alle afgeleide klassen. Beheerde clients, die rechtstreeks verbinding maken met klassen, vertonen niet dezelfde versiebeheerproblemen. Zie COM Callable Wrapper voor specifieke richtlijnen voor het gebruik van een klasse-interface.

De Tlbimp.exe (Type Library Importer) is altijd van toepassing op geïmporteerde klassen die het ClassInterfaceType.None opsommingslid gebruiken om aan te geven dat bestaande COM-klassen nooit beheerde interfaces beschikbaar maken.

Constructors

Name Description
ClassInterfaceAttribute(ClassInterfaceType)

Initialiseert een nieuw exemplaar van de ClassInterfaceAttribute klasse met het opgegeven ClassInterfaceType opsommingslid.

ClassInterfaceAttribute(Int16)

Initialiseert een nieuw exemplaar van de ClassInterfaceAttribute klasse met de opgegeven ClassInterfaceType opsommingswaarde.

Eigenschappen

Name Description
TypeId

Wanneer deze wordt geïmplementeerd in een afgeleide klasse, krijgt u Attributehiervoor een unieke id.

(Overgenomen van Attribute)
Value

Hiermee haalt u de ClassInterfaceType waarde op die beschrijft welk type interface moet worden gegenereerd voor de klasse.

Methoden

Name Description
Equals(Object)

Retourneert een waarde die aangeeft of dit exemplaar gelijk is aan een opgegeven object.

(Overgenomen van Attribute)
GetHashCode()

Retourneert de hash-code voor dit exemplaar.

(Overgenomen van Attribute)
GetType()

Hiermee haalt u de Type huidige instantie op.

(Overgenomen van Object)
IsDefaultAttribute()

Wanneer deze wordt overschreven in een afgeleide klasse, geeft u aan of de waarde van dit exemplaar de standaardwaarde is voor de afgeleide klasse.

(Overgenomen van Attribute)
Match(Object)

Wanneer deze wordt overschreven in een afgeleide klasse, wordt een waarde geretourneerd die aangeeft of dit exemplaar gelijk is aan een opgegeven object.

(Overgenomen van Attribute)
MemberwiseClone()

Hiermee maakt u een ondiepe kopie van de huidige Object.

(Overgenomen van Object)
ToString()

Retourneert een tekenreeks die het huidige object vertegenwoordigt.

(Overgenomen van Object)

Expliciete interface-implementaties

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

Hiermee wordt een set namen toegewezen aan een bijbehorende set verzend-id's.

(Overgenomen van Attribute)
_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr)

Hiermee haalt u de typegegevens voor een object op, die kan worden gebruikt om de typegegevens voor een interface op te halen.

(Overgenomen van Attribute)
_Attribute.GetTypeInfoCount(UInt32)

Hiermee wordt het aantal type-informatieinterfaces opgehaald dat een object biedt (0 of 1).

(Overgenomen van Attribute)
_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr)

Biedt toegang tot eigenschappen en methoden die door een object worden weergegeven.

(Overgenomen van Attribute)

Van toepassing op

Zie ook