ClassInterfaceAttribute Třída

Definice

Označuje typ rozhraní třídy, která má být generována pro třídu vystavenou modelu COM, pokud je rozhraní vygenerováno vůbec.

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
Dědičnost
ClassInterfaceAttribute
Atributy

Příklady

Následující příklad ukazuje, jak použít ClassInterfaceAttribute s ClassInterfaceType hodnotou AutoDispatch, která generuje IDispatch rozhraní pro 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

Poznámky

Tento atribut můžete použít na sestavení nebo třídy.

Tento atribut řídí, zda nástroj Type Library Exporter (Tlbexp.exe) automaticky generuje rozhraní třídy pro třídu s atributem . Rozhraní třídy nese stejný název jako samotná třída, ale název má předponu podtržítko. Při zveřejnění obsahuje rozhraní třídy všechny public, které nejsou static členy spravované třídy, včetně členů zděděných z její základní třídy. Spravované třídy nemají přístup k rozhraní třídy a nemají potřebu, protože mají přímý přístup ke členům třídy. Tlbexp.exe vygeneruje jedinečný identifikátor rozhraní (IID) pro rozhraní třídy.

Rozhraní třídy mohou být duální rozhraní nebo rozhraní pouze pro odesílání. Volitelně můžete potlačit generování rozhraní třídy a místo toho poskytnout vlastní rozhraní. Vystavit nebo potlačit rozhraní třídy zadáním člen výčtu System.Runtime.InteropServices.ClassInterfaceType . Když použijete ClassInterfaceAttribute na sestavení, atribut se vztahuje ke všem třídám v sestavení, pokud jednotlivé třídy nepřepíší nastavení vlastním atributem.

I když rozhraní tříd eliminují úlohu explicitního definování rozhraní pro každou třídu, jejich použití v produkčních aplikacích se důrazně nedoporučuje. Rozhraní duální třídy umožňují klientům vytvořit vazbu na konkrétní rozložení rozhraní, které se může při vývoji třídy měnit. Představte si například spravovanou třídu, která zpřístupňuje rozhraní třídy klientům modelu COM. První verze třídy obsahuje metody North a South. Nespravovaný klient může vytvořit vazbu na rozhraní třídy, které poskytuje North jako první metodu v rozhraní třídy a metodu South jako druhou metodu. Teď zvažte další verzi třídy, která má novou metodu East, vloženou mezi metody North a South. Nespravované klienty, kteří se pokusí vytvořit vazbu na novou třídu prostřednictvím rozhraní staré třídy, skončí voláním metody East , když mají v úmyslu volat metodu South, protože umístění metod v rámci rozhraní se změnilo. Kromě toho jakákoli změna rozložení základní třídy také ovlivňuje rozložení rozhraní třídy pro všechny odvozené třídy. Spravovaní klienti, kteří jsou vázáni přímo na třídy, nevykazují stejné problémy se správou verzí. Konkrétní pokyny pro použití rozhraní třídy naleznete v tématu Com Callable Wrapper.

Tlbimp.exe (Type Library Importer) vždy platí pro importované třídy ClassInterfaceType.None člen výčtu, aby bylo možné indikovat, že existující třídy modelu COM nikdy nezpřístupňují spravovaná rozhraní.

Konstruktory

ClassInterfaceAttribute(ClassInterfaceType)

Inicializuje novou instanci ClassInterfaceAttribute třídy se zadaným ClassInterfaceType členem výčtu.

ClassInterfaceAttribute(Int16)

Inicializuje novou instanci ClassInterfaceAttribute třídy se zadanou ClassInterfaceType hodnotou výčtu.

Vlastnosti

TypeId

Při implementaci v odvozené třídě získá jedinečný identifikátor pro tuto Attributetřídu .

(Zděděno od Attribute)
Value

ClassInterfaceType Získá hodnotu, která popisuje, který typ rozhraní by měl být generován pro třídu.

Metody

Equals(Object)

Vrací hodnotu, která určuje, zda je tato instance rovna zadanému objektu.

(Zděděno od Attribute)
GetHashCode()

Vrátí hodnotu hash pro tuto instanci.

(Zděděno od Attribute)
GetType()

Type Získá z aktuální instance.

(Zděděno od Object)
IsDefaultAttribute()

Při přepsání v odvozené třídě označuje, zda je hodnota této instance výchozí hodnotou pro odvozenou třídu.

(Zděděno od Attribute)
Match(Object)

Při přepsání v odvozené třídě vrátí hodnotu, která označuje, zda se tato instance rovná zadanému objektu.

(Zděděno od Attribute)
MemberwiseClone()

Vytvoří mělkou kopii aktuálního Objectsouboru .

(Zděděno od Object)
ToString()

Vrátí řetězec, který představuje aktuální objekt.

(Zděděno od Object)

Explicitní implementace rozhraní

_Attribute.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr)

Mapuje sadu názvů na odpovídající sadu identifikátorů pro rozesílání.

(Zděděno od Attribute)
_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr)

Načte informace o typu objektu, které lze použít k získání informací o typu pro rozhraní.

(Zděděno od Attribute)
_Attribute.GetTypeInfoCount(UInt32)

Získá počet rozhraní typu informací, které objekt poskytuje (0 nebo 1).

(Zděděno od Attribute)
_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr)

Poskytuje přístup k vlastnostem a metodám vystaveným objektem.

(Zděděno od Attribute)

Platí pro

Viz také