ClassInterfaceAttribute Classe
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Indica il tipo di interfaccia di classe da generare per una classe esposta a COM, se viene generata un'interfaccia.
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
- Ereditarietà
- Attributi
Esempio
Nell'esempio seguente viene illustrato come applicare l'oggetto con il valore , che genera un'interfaccia ClassInterfaceAttributeClassInterfaceTypeIDispatch
per .MyClass
AutoDispatch
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 agli assembly o alle classi.
Questo attributo controlla se Type Library Exporter (Tlbexp.exe) genera automaticamente un'interfaccia di classe per la classe con attributi. Un'interfaccia di classe contiene lo stesso nome della classe stessa, ma il nome è preceduto da un carattere di sottolineatura. Se esposta, l'interfaccia della classe contiene tutti i public
membri , non static
membri della classe gestita, inclusi i membri ereditati dalla classe base. Le classi gestite non possono accedere a un'interfaccia di classe e non hanno bisogno di accedere direttamente ai membri della classe. Tlbexp.exe genera un identificatore di interfaccia univoco (IID) per l'interfaccia della classe.
Le interfacce di classe possono essere interfacce di sola distribuzione o doppia. Facoltativamente, è possibile eliminare la generazione dell'interfaccia della classe e fornire invece un'interfaccia personalizzata. Si espone o si elimina un'interfaccia di classe specificando un System.Runtime.InteropServices.ClassInterfaceType membro di enumerazione. Quando si applica ClassInterfaceAttribute a un assembly, l'attributo riguarda tutte le classi dell'assembly, a meno che le singole classi non eseseguono l'override dell'impostazione con il proprio attributo.
Anche se le interfacce di classe eliminano l'attività di definire in modo esplicito le interfacce per ogni classe, il loro uso nelle applicazioni di produzione è fortemente sconsigliato. Le interfacce di classe doppia consentono ai client di associare a un layout di interfaccia specifico soggetto a modifiche man mano che la classe evolve. Si consideri ad esempio una classe gestita che espone un'interfaccia di classe ai client COM. La prima versione della classe contiene metodi North
e 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 come secondo metodo South
. Prendere ora in considerazione la versione successiva della classe, che ha un nuovo metodo, , East
inserito tra metodi North
e South
. I client non gestiti che tentano di associare alla nuova classe tramite il metodo di chiamata dell'interfaccia di classe precedente quando intendono chiamare il metodo East
South
, perché la posizione dei metodi all'interno dell'interfaccia è stata modificata. Inoltre, qualsiasi modifica al layout di una classe di base influisce anche sul layout dell'interfaccia della classe per tutte le classi derivate. I client gestiti, che si associano direttamente alle classi, non presentano gli stessi problemi di controllo delle versioni. Per linee guida specifiche sull'uso di un'interfaccia di classe, vedere Wrapper chiamabile COM.
Il Tlbimp.exe (Type Library Import) si applica sempre alle classi importate dal ClassInterfaceType.None membro di enumerazione per indicare che le classi COM esistenti non espongono mai interfacce gestite.
Costruttori
ClassInterfaceAttribute(ClassInterfaceType) |
Inizializza una nuova istanza della classe ClassInterfaceAttribute con il membro di enumerazione ClassInterfaceType specificato. |
ClassInterfaceAttribute(Int16) |
Inizializza una nuova istanza della classe ClassInterfaceAttribute con il valore di enumerazione ClassInterfaceType specificato. |
Proprietà
TypeId |
Quando è implementata in una classe derivata, ottiene un identificatore univoco della classe Attribute. (Ereditato da Attribute) |
Value |
Ottiene il valore ClassInterfaceType che descrive il tipo di interfaccia che deve essere generato per la classe. |
Metodi
Equals(Object) |
Restituisce un valore che indica se questa istanza è uguale a un oggetto specificato. (Ereditato da Attribute) |
GetHashCode() |
Restituisce il codice hash per l'istanza. (Ereditato da Attribute) |
GetType() |
Ottiene l'oggetto Type dell'istanza corrente. (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. (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. (Ereditato da Attribute) |
MemberwiseClone() |
Crea una copia superficiale dell'oggetto Object corrente. (Ereditato da Object) |
ToString() |
Restituisce una stringa che rappresenta l'oggetto corrente. (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. (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. (Ereditato da Attribute) |
_Attribute.GetTypeInfoCount(UInt32) |
Recupera il numero delle interfacce di informazioni sul tipo fornite da un oggetto (0 o 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. (Ereditato da Attribute) |