ClassInterfaceAttribute ClassInterfaceAttribute ClassInterfaceAttribute ClassInterfaceAttribute Class

Definição

Indica o tipo de interface de classe a ser gerado para uma classe exposta ao COM, se uma interface for de fato gerada.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
Herança
ClassInterfaceAttributeClassInterfaceAttributeClassInterfaceAttributeClassInterfaceAttribute
Atributos

Exemplos

O exemplo a seguir mostra como aplicar a ClassInterfaceAttribute com o ClassInterfaceType valor AutoDispatch, que gera um IDispatch interface 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

Comentários

Você pode aplicar esse atributo para assemblies ou classes.You can apply this attribute to assemblies or classes.

Esse atributo controla se o exportador da biblioteca (Tlbexp.exe) gera automaticamente uma interface de classe para a classe atribuída.This attribute controls whether the Type Library Exporter (Tlbexp.exe) automatically generates a class interface for the attributed class. Uma interface de classe recebe o mesmo nome que a classe em si, mas o nome é prefixado com um sublinhado.A class interface carries the same name as the class itself, but the name is prefixed with an underscore. Quando exposto, a interface de classe contém todos os public, não- static membros da classe gerenciada, incluindo membros herdados de sua 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. Classes gerenciadas não podem acessar uma interface de classe e você não precisará como eles podem acessar os membros da classe diretamente.Managed classes cannot access a class interface and have no need to as they can access the class members directly. Tlbexp.exe gera um identificador exclusivo de interface (IID) para a interface de classe.Tlbexp.exe generates a unique interface identifier (IID) for the class interface.

Interfaces de classe podem ser interfaces duplos ou somente de expedição.Class interfaces can be dual or dispatch-only interfaces. Opcionalmente, você pode suprimir a geração da interface de classe e fornecer uma interface personalizada em vez disso.Optionally, you can suppress the generation of the class interface and provide a custom interface instead. Expor ou suprimir uma interface de classe, especificando um System.Runtime.InteropServices.ClassInterfaceType membro de enumeração.You expose or suppress a class interface by specifying a System.Runtime.InteropServices.ClassInterfaceType enumeration member. Quando você aplica ClassInterfaceAttribute a um assembly, o atributo pertence a todas as classes no assembly, a menos que as classes individuais substituem a configuração com seu próprio 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.

Embora as interfaces de classe eliminam a tarefa de definir explicitamente as interfaces para cada classe, seu uso em aplicativos de produção é altamente desaconselhável.Although class interfaces eliminate the task of explicitly defining interfaces for each class, their use in production applications is strongly discouraged. Interfaces de classe dupla permitem que os clientes sejam associados a um layout de interface específica que está sujeita a alterações à medida que a classe evolui.Dual class interfaces allow clients to bind to a specific interface layout that is subject to change as the class evolves. Por exemplo, considere uma classe gerenciada que expõe uma interface de classe para os clientes COM.For example, consider a managed class that exposes a class interface to COM clients. A primeira versão da classe contém métodos North e South.The first version of the class contains methods North and South. Um cliente não gerenciado pode associar a interface de classe, que fornece North como o primeiro método na interface de classe e método South como o 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. Agora, a próxima versão da classe, que tem um novo método, considere Eastinserido entre os métodos North e South.Now consider the next version of the class, which has a new method, East, inserted between methods North and South. Os clientes não gerenciados que tentam se associar à nova classe por meio da interface de classe antiga acabarem chamando o método East quando ele pretende chamar método South, pois o posicionamento dos métodos dentro da interface foi alterado.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. Além disso, qualquer alteração no layout de uma classe base também afeta o layout da interface de classe para todas as classes derivadas.Moreover, any change to the layout of a base class also affects the layout of the class interface for all derived classes. Gerenciado clientes, quais associar diretamente a classes, não apresentam os mesmos problemas de controle de versão.Managed clients, which bind directly to classes, do not exhibit the same versioning problems. Para obter diretrizes específicas sobre como usar uma interface de classe, consulte COM Callable Wrapper.For specific guidelines on using a class interface, see COM Callable Wrapper.

O Tlbimp.exe (importador da biblioteca) sempre se aplica a classes importadas a ClassInterfaceType.None interfaces gerenciadas de membro de enumeração para indicar que o existente COM classes nunca expõe.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.

Construtores

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

Inicializa uma nova instância da classe ClassInterfaceAttribute com o membro de enumeração 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 uma nova instância da classe ClassInterfaceAttribute com o valor de enumeração ClassInterfaceType especificado.Initializes a new instance of the ClassInterfaceAttribute class with the specified ClassInterfaceType enumeration value.

Propriedades

TypeId TypeId TypeId TypeId

Quando implementado em uma classe derivada, obtém um identificador exclusivo para este Attribute.When implemented in a derived class, gets a unique identifier for this Attribute.

(Inherited from Attribute)
Value Value Value Value

Obtém o valor ClassInterfaceType que descreve que tipo de interface deverá ser gerado para a classe.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)

Retorna um valor que indica se essa instância é igual a um objeto especificado.Returns a value that indicates whether this instance is equal to a specified object.

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

Retorna o código hash para essa instância.Returns the hash code for this instance.

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

Obtém o Type da instância atual.Gets the Type of the current instance.

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

Quando substituído em uma classe derivada, indica se o valor dessa instância é o valor padrão para a classe 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)

Quando substituído em uma classe derivada, retorna um valor que indica se essa instância é igual a um 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()

Cria uma cópia superficial do Object atual.Creates a shallow copy of the current Object.

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

Retorna uma cadeia de caracteres que representa o objeto atual.Returns a string that represents the current object.

(Inherited from Object)

Implantações explícitas de interface

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

Mapeia um conjunto de nomes para um conjunto correspondente de identificadores de expediçã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)

Recupera as informações de tipo para um objeto, que pode ser usado para obter as informações de tipo para uma interface.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)

Retorna o número de interfaces de informações do tipo que um objeto fornece (0 ou 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)

Fornece acesso a propriedades e métodos expostos por um objeto.Provides access to properties and methods exposed by an object.

(Inherited from Attribute)

Aplica-se a

Veja também