ClassInterfaceAttribute ClassInterfaceAttribute ClassInterfaceAttribute ClassInterfaceAttribute Class

Definición

Indica el tipo de interfaz de clase que se generará para una clase expuesta a COM si no se genera una interfaz.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
Herencia
ClassInterfaceAttributeClassInterfaceAttributeClassInterfaceAttributeClassInterfaceAttribute
Atributos

Ejemplos

En el ejemplo siguiente se muestra cómo aplicar el ClassInterfaceAttribute con el ClassInterfaceType valor AutoDispatch, lo que genera un IDispatch interfaz para 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

Comentarios

Puede aplicar este atributo a los ensamblados o clases.You can apply this attribute to assemblies or classes.

Este atributo controla si el exportador de la biblioteca de tipos (Tlbexp.exe) genera automáticamente una interfaz de clase para la clase con atributos.This attribute controls whether the Type Library Exporter (Tlbexp.exe) automatically generates a class interface for the attributed class. Una interfaz de clase tiene el mismo nombre que la propia clase, pero el nombre tiene como prefijo un carácter de subrayado.A class interface carries the same name as the class itself, but the name is prefixed with an underscore. Cuando se expone, la interfaz de clase contiene todos los public, no- static miembros de la clase administrada, incluidos los miembros heredados de su clase base.When exposed, the class interface contains all the public, non- static members of the managed class, including members inherited from its base class. Las clases administradas no se pueden obtener acceso a una interfaz de clase y no es necesario para que pueden tener acceso directamente a los miembros de clase.Managed classes cannot access a class interface and have no need to as they can access the class members directly. Tlbexp.exe genera un identificador de interfaz (IID) para la interfaz de clase.Tlbexp.exe generates a unique interface identifier (IID) for the class interface.

Interfaces de clase pueden ser interfaces duales o sólo de envío.Class interfaces can be dual or dispatch-only interfaces. Si lo desea, puede suprimir la generación de la interfaz de clase y proporcionar una interfaz personalizada en su lugar.Optionally, you can suppress the generation of the class interface and provide a custom interface instead. Exponer o suprimir una interfaz de clase especificando un System.Runtime.InteropServices.ClassInterfaceType miembro de enumeración.You expose or suppress a class interface by specifying a System.Runtime.InteropServices.ClassInterfaceType enumeration member. Al aplicar ClassInterfaceAttribute a un ensamblado, el atributo pertenece a todas las clases en el ensamblado a menos que las clases individuales invalidan la configuración con su propio atributo.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.

Aunque las interfaces de clases de eliminan la tarea de definir interfaces explícitamente para cada clase, se desaconseja su uso en aplicaciones de producción.Although class interfaces eliminate the task of explicitly defining interfaces for each class, their use in production applications is strongly discouraged. Interfaces de clase dual permiten a los clientes enlazarse a un diseño de interfaz específica que está sujeta a cambios a medida que evoluciona la clase.Dual class interfaces allow clients to bind to a specific interface layout that is subject to change as the class evolves. Por ejemplo, considere la posibilidad de una clase administrada que expone una interfaz de clase a los clientes COM.For example, consider a managed class that exposes a class interface to COM clients. La primera versión de la clase contiene métodos North y South.The first version of the class contains methods North and South. Un cliente no administrado puede enlazar a la interfaz de clase, que proporciona North como el primer método en la interfaz de clase y método South como el segundo método.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. Ahora considere la siguiente versión de la clase, que tiene un método nuevo, East, insertado entre los métodos North y South.Now consider the next version of the class, which has a new method, East, inserted between methods North and South. Los clientes no administrados que intentan enlazar la nueva clase a través de la interfaz de clase antigua acabarán llamando al método East cuando intenten llamar al método South, porque ha cambiado la posición de los métodos dentro de la interfaz.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. Además, cualquier cambio en el diseño de una clase base también afecta al diseño de la interfaz de clase para todas las clases derivadas.Moreover, any change to the layout of a base class also affects the layout of the class interface for all derived classes. Los clientes administrados, que se enlazan directamente a las clases, no presentan los mismos problemas de control de versiones.Managed clients, which bind directly to classes, do not exhibit the same versioning problems. Para obtener instrucciones específicas sobre el uso de una interfaz de clase, vea contenedor CCW.For specific guidelines on using a class interface, see COM Callable Wrapper.

El Tlbimp.exe (importador de biblioteca) siempre se aplica a las clases importadas el ClassInterfaceType.None miembro de enumeración para indicar que COM existente nunca clases exponen interfaces administradas.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.

Constructores

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

Inicializa una nueva instancia de la clase ClassInterfaceAttribute con el miembro de enumeración ClassInterfaceType especificado.Initializes a new instance of the ClassInterfaceAttribute class with the specified ClassInterfaceType enumeration member.

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

Inicializa una nueva instancia de la clase ClassInterfaceAttribute con el valor de enumeración ClassInterfaceType especificado.Initializes a new instance of the ClassInterfaceAttribute class with the specified ClassInterfaceType enumeration value.

Propiedades

TypeId TypeId TypeId TypeId

Cuando se implementa en una clase derivada, obtiene un identificador único para este Attribute.When implemented in a derived class, gets a unique identifier for this Attribute.

(Inherited from Attribute)
Value Value Value Value

Obtiene el valor de ClassInterfaceType que describe qué tipo de interfaz debe generarse para la clase.Gets the ClassInterfaceType value that describes which type of interface should be generated for the class.

Métodos

Equals(Object) Equals(Object) Equals(Object) Equals(Object)

Devuelve un valor que indica si esta instancia es igual que un objeto especificado.Returns a value that indicates whether this instance is equal to a specified object.

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

Devuelve el código hash de esta instancia.Returns the hash code for this instance.

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

Obtiene el Type de la instancia actual.Gets the Type of the current instance.

(Inherited from Object)
IsDefaultAttribute() IsDefaultAttribute() IsDefaultAttribute() IsDefaultAttribute()

Si se reemplaza en una clase derivada, indica si el valor de esta instancia es el valor predeterminado de la clase derivada.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)

Cuando se invalida en una clase derivada, devuelve un valor que indica si esta instancia es igual a un objeto especificado.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 superficial del objeto Object actual.Creates a shallow copy of the current Object.

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

Devuelve una cadena que representa el objeto actual.Returns a string that represents the current object.

(Inherited from Object)

Implementaciones de interfaz explícitas

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

Asigna un conjunto de nombres a un conjunto correspondiente de identificadores de envío.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)

Obtiene la información de tipos de un objeto, que puede utilizarse para obtener la información de tipos de una interfaz.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 el número de interfaces de información de tipo que proporciona un objeto (0 ó 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)

Proporciona acceso a las propiedades y los métodos expuestos por un objeto.Provides access to properties and methods exposed by an object.

(Inherited from Attribute)

Se aplica a

Consulte también: