ClassInterfaceAttribute Classe

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à
ClassInterfaceAttribute
Attributi

Esempi

Nell'esempio seguente viene illustrato come applicare l' ClassInterfaceAttribute oggetto con ClassInterfaceType il AutoDispatchvalore, che genera IDispatch un'interfaccia MyClassper.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 assembly o classi.You can apply this attribute to assemblies or classes.

Questo attributo controlla se l'utilità di esportazione della libreria dei tipi (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 ha 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 viene esposto, l'interfaccia della classe contiene publictutti i static membri non appartenenti alla classe gestita, inclusi i membri ereditati dalla relativa classe di 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 devono essere in grado di accedere direttamente ai membri della classe.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 di interfaccia univoco (IID) per l'interfaccia della classe.Tlbexp.exe generates a unique interface identifier (IID) for the class interface.

Le interfacce di classe possono essere interfacce duali o solo dispatch.Class interfaces can be dual or dispatch-only interfaces. Facoltativamente, è possibile disattivare la generazione dell'interfaccia della classe e 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 le singole classi non eseguano l'override dell'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 eliminino l'attività di definizione esplicita delle interfacce per ogni classe, il loro utilizzo nelle applicazioni di produzione è fortemente sconsigliato.Although class interfaces eliminate the task of explicitly defining interfaces for each class, their use in production applications is strongly discouraged. Le interfacce dual Class consentono ai client di eseguire l'associazione a un layout di interfaccia specifico soggetto a modifiche man mano che la classe evolve.Dual class interfaces allow clients to bind to a specific interface layout that is subject to change as the class evolves. Si consideri, ad esempio, 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 della classe, che fornisce North come primo metodo nell'interfaccia della classe e nel metodo South come 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 versione successiva della classe, che ha un nuovo Eastmetodo,, inserito North tra Southi metodi e.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 tentano di eseguire l'associazione alla nuova classe tramite l'interfaccia di classe precedente terminano chiamando il metodo East quando intendono chiamare il metodo South, perché il posizionamento dei metodi all'interno dell'interfaccia è stato modificato.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, tutte le modifiche apportate al layout di una classe di base influiscono sul 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, che si associano 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 linee guida specifiche sull'uso di un'interfaccia di classe, vedere COM Callable Wrapper.For specific guidelines on using a class interface, see COM Callable Wrapper.

Tlbimp. exe (utilità di importazione della libreria dei tipi) si applica sempre alle classi ClassInterfaceType.None importate, il membro di enumerazione, per indicare che le classi com esistenti non espongono mai 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)

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)

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

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.

(Ereditato da Attribute)
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)

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.

(Ereditato da Attribute)
GetHashCode()

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

(Ereditato da Attribute)
GetType()

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

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

(Ereditato da Attribute)
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.

(Ereditato da Attribute)
MemberwiseClone()

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

(Ereditato da Object)
ToString()

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

(Ereditato da Object)

Implementazioni dell'interfaccia esplicita

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

(Ereditato da Attribute)
_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.

(Ereditato da Attribute)
_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).

(Ereditato da Attribute)
_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.

(Ereditato da Attribute)

Si applica a

Vedi anche