ClassInterfaceAttribute ClassInterfaceAttribute ClassInterfaceAttribute ClassInterfaceAttribute Class

Definizione

Indica il tipo di interfaccia di classe da generare per una classe esposta a COM, se viene generata un'interfaccia.Indicates the type of class interface to be generated for a class exposed to COM, if an interface is generated at all.

public ref class ClassInterfaceAttribute sealed : Attribute
[System.AttributeUsage(System.AttributeTargets.Assembly | System.AttributeTargets.Class, Inherited=false)]
[System.Runtime.InteropServices.ComVisible(true)]
public sealed class ClassInterfaceAttribute : Attribute
type ClassInterfaceAttribute = class
    inherit Attribute
Public NotInheritable Class ClassInterfaceAttribute
Inherits Attribute
Ereditarietà
ClassInterfaceAttributeClassInterfaceAttributeClassInterfaceAttributeClassInterfaceAttribute
Attributi

Esempi

Nell'esempio seguente viene illustrato come applicare la ClassInterfaceAttribute con il ClassInterfaceType valore AutoDispatch, che genera un' IDispatch interfaccia di amministrazione di MyClass.The following example shows how to apply the ClassInterfaceAttribute with the ClassInterfaceType value AutoDispatch, which generates an IDispatch interface for MyClass.

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

Commenti

È possibile applicare questo attributo a classi o assembly.You can apply this attribute to assemblies or classes.

Questo attributo controlla se Type Library Exporter (Tlbexp.exe) genera automaticamente un'interfaccia di classe per la classe con attributi.This attribute controls whether the Type Library Exporter (Tlbexp.exe) automatically generates a class interface for the attributed class. Un'interfaccia di classe avrà lo stesso nome della classe stessa, ma il nome è preceduto da un carattere di sottolineatura.A class interface carries the same name as the class itself, but the name is prefixed with an underscore. Quando è esposto, l'interfaccia della classe contiene tutti i public, non- static membri della classe gestita, inclusi i membri ereditati dalla relativa classe base.When exposed, the class interface contains all the public, non- static members of the managed class, including members inherited from its base class. Le classi gestite non possono accedere a un'interfaccia di classe e non necessario con cui accedono i membri della classe direttamente.Managed classes cannot access a class interface and have no need to as they can access the class members directly. Tlbexp.exe genera un identificatore univoco dell'interfaccia (IID) per l'interfaccia della classe.Tlbexp.exe generates a unique interface identifier (IID) for the class interface.

Interfacce di classi possono essere interfacce solo dispatch o duale.Class interfaces can be dual or dispatch-only interfaces. Facoltativamente, è possibile eliminare la generazione dell'interfaccia della classe e invece di fornire un'interfaccia personalizzata.Optionally, you can suppress the generation of the class interface and provide a custom interface instead. Si espone o si elimina un'interfaccia di classe, specificando un System.Runtime.InteropServices.ClassInterfaceType membro di enumerazione.You expose or suppress a class interface by specifying a System.Runtime.InteropServices.ClassInterfaceType enumeration member. Quando si applica ClassInterfaceAttribute a un assembly, l'attributo si riferisce a tutte le classi nell'assembly a meno che non le singole classi sostituire l'impostazione con il relativo attributo.When you apply ClassInterfaceAttribute to an assembly, the attribute pertains to all classes in the assembly unless the individual classes override the setting with their own attribute.

Sebbene le interfacce delle classi di eliminare l'attività consente di definire esplicitamente le interfacce per ogni classe, è fortemente sconsigliato l'uso in applicazioni di produzione.Although class interfaces eliminate the task of explicitly defining interfaces for each class, their use in production applications is strongly discouraged. Interfacce di classe duale consentono ai client di associare a un layout di interfaccia specifica che è soggette a modifiche con la classe evoluzione.Dual class interfaces allow clients to bind to a specific interface layout that is subject to change as the class evolves. Ad esempio, si consideri una classe gestita che espone un'interfaccia di classe ai client COM.For example, consider a managed class that exposes a class interface to COM clients. La prima versione della classe contiene i metodi North e South.The first version of the class contains methods North and South. Un client non gestito può essere associato all'interfaccia di classe, che offre North come il primo metodo nell'interfaccia di classe e metodo South come il secondo metodo.An unmanaged client can bind to the class interface, which provides North as the first method in the class interface and method South as the second method. Si consideri ora la prossima versione della classe, che ha un nuovo metodo, Eastinserito tra i metodi North e South.Now consider the next version of the class, which has a new method, East, inserted between methods North and South. I client non gestiti che provano a eseguire l'associazione alla nuova classe tramite l'interfaccia di classe precedente finiscono per chiamare il metodo East quando si intende chiamare metodo South, perché il posizionamento dei metodi all'interno dell'interfaccia è stata modificata.Unmanaged clients that try to bind to the new class through the old class interface end up calling method East when they intend to call method South, because the positioning of methods within the interface has changed. Inoltre, qualsiasi modifica al layout di una classe base interesserà anche il layout dell'interfaccia della classe per tutte le classi derivate.Moreover, any change to the layout of a base class also affects the layout of the class interface for all derived classes. I client gestiti, quali binding direttamente alle classi, non presentano gli stessi problemi di controllo delle versioni.Managed clients, which bind directly to classes, do not exhibit the same versioning problems. Per indicazioni specifiche sull'uso di un'interfaccia di classe, vedere COM Callable Wrapper.For specific guidelines on using a class interface, see COM Callable Wrapper.

Il Tlbimp.exe (tipo di libreria utilità di importazione) viene sempre applicato alle classi importate le ClassInterfaceType.None membro di enumerazione per indicare che le classi COM esistenti mai espongono interfacce gestite.The Tlbimp.exe (Type Library Importer) always applies to imported classes the ClassInterfaceType.None enumeration member to indicate that existing COM classes never expose managed interfaces.

Costruttori

ClassInterfaceAttribute(ClassInterfaceType) ClassInterfaceAttribute(ClassInterfaceType) ClassInterfaceAttribute(ClassInterfaceType) ClassInterfaceAttribute(ClassInterfaceType)

Inizializza una nuova istanza della classe ClassInterfaceAttribute con il membro di enumerazione ClassInterfaceType specificato.Initializes a new instance of the ClassInterfaceAttribute class with the specified ClassInterfaceType enumeration member.

ClassInterfaceAttribute(Int16) ClassInterfaceAttribute(Int16) ClassInterfaceAttribute(Int16) ClassInterfaceAttribute(Int16)

Inizializza una nuova istanza della classe ClassInterfaceAttribute con il valore di enumerazione ClassInterfaceType specificato.Initializes a new instance of the ClassInterfaceAttribute class with the specified ClassInterfaceType enumeration value.

Proprietà

TypeId TypeId TypeId 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.

(Inherited from Attribute)
Value Value Value Value

Ottiene il valore ClassInterfaceType che descrive il tipo di interfaccia che deve essere generato per la classe.Gets the ClassInterfaceType value that describes which type of interface should be generated for the class.

Metodi

Equals(Object) Equals(Object) Equals(Object) 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.

(Inherited from Attribute)
GetHashCode() GetHashCode() GetHashCode() GetHashCode()

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

(Inherited from Attribute)
GetType() GetType() GetType() GetType()

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

(Inherited from Object)
IsDefaultAttribute() IsDefaultAttribute() IsDefaultAttribute() 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.

(Inherited from Attribute)
Match(Object) Match(Object) Match(Object) 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.

(Inherited from Attribute)
MemberwiseClone() MemberwiseClone() MemberwiseClone() MemberwiseClone()

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

(Inherited from Object)
ToString() ToString() ToString() ToString()

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

(Inherited from Object)

Implementazioni dell'interfaccia esplicita

_Attribute.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr) _Attribute.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr) _Attribute.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr) _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.

(Inherited from Attribute)
_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr) _Attribute.GetTypeInfo(UInt32, UInt32, IntPtr) _Attribute.GetTypeInfo(UInt32, UInt32, IntPtr) _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.

(Inherited from Attribute)
_Attribute.GetTypeInfoCount(UInt32) _Attribute.GetTypeInfoCount(UInt32) _Attribute.GetTypeInfoCount(UInt32) _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).

(Inherited from Attribute)
_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr) _Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr) _Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr) _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.

(Inherited from Attribute)

Si applica a

Vedi anche